Je travaille avec la bibliothèque Leanback de Google pour Android TV et j'essaie de trouver le meilleur moyen d'écouter les boutons de la télécommande (en particulier ceux qui ne sont pas capturés par la MediaSession
).
Pour cette raison, j'ai un point d'arrêt dans BaseGridView.dispatchTouchEvent()
et lorsque j'appuie sur l'un des boutons de la télécommande, le débogueur saute à ce point et me montre les informations de débogage habituelles.
Cependant, après quelques secondes (2-5), les informations de débogage disparaissent et sont remplacées par le message "La trame n'est pas disponible".
À d'autres endroits, le débogueur fonctionne bien, alors je me demandais si le retard causé par le débogueur est comptabilisé comme ANR et que l'application est donc forcée?
En tout cas, y a-t-il un moyen de contourner cela?
Ce message apparaît parce que vous définissez trop de points d'arrêt et que les threads attendent les données d'autres threads. Pour résoudre ce problème, vous pouvez annuler certains points d'arrêt et attendre que les données soient prêtes ...
le message "cadres non disponibles" signifie qu'il n'y a plus de cadres disponibles pour le débogage. L'aide d'Android studio indique clairement le but de la fenêtre de cadre et les cadres à l'intérieur:
La sous-fenêtre Frames vous permet d'accéder à la liste des threads de votre application, d'exporter vers un fichier texte et de personnaliser la présentation des threads. Pour chaque thread, vous pouvez afficher le cadre de la pile, examiner les cadres, naviguer entre les cadres et accéder automatiquement au code source d'un cadre dans l'éditeur. Vous pouvez sélectionner un fil via la liste déroulante Sélecteur de fil en haut du volet. Le statut et le type d'un fil sont indiqués par une icône spéciale et une note textuelle à côté du nom du fil.
Donc, maintenant que vous n'avez plus d'images disponibles, cela signifie que toutes les images sont fermées pour le débogage. Cela pourrait être dû au fait que l'application est fermée de force ou qu'elle se comporte mal sur cette ligne de quelque manière que ce soit. Essayez de déboguer l’instruction, après quoi cela résoudra ce problème. J'espère que cela aidera
Ayant le même problème, redémarrer AS fonctionne pour moi.
Lorsque vous recevez le message "cadres non disponibles", cela signifie qu'il n'y a plus de cadres disponibles pour le débogage. Les cadres font partie du débogage d'Android Studio, qui vous donne accès à la liste des threads en cours d'exécution dans votre application. C'est la longue liste de processus que vous voyez dans la fenêtre de débogage. Donc, ce qui se passe, c'est qu'Android Studio perd la connaissance des threads qu'il avait avant de définir le point d'arrêt lorsque vous sortez. Cela peut se produire dans votre cas, car par défaut, lorsque vous définissez un point d'arrêt, il arrête l'exécution de tous les threads. Lorsque vous sortez, les threads qui suivent s'appuient sur les threads avant de fonctionner, ce qui ferme l'application. Puisque vous définissez votre point d'arrêt sur getCurrentDetails, ma meilleure hypothèse est qu'il n'a pas reçu la réponse de OKHttp à temps, car il se produit dans un thread en arrière-plan. Vous pouvez essayer deux choses pour le faire fonctionner. Tout d'abord, essayez de cliquer avec le bouton droit sur le point d'arrêt et de changer le point d'arrêt de suspendre tous les threads en un seul thread. Cela devrait permettre à OKHttp d’obtenir la réponse à temps avant d’être coupé. Ou, déplacez votre point d'arrêt plus bas et voyez si cela fonctionne.