Android: Quittant le Looper?
J'ai un fil que j'utilise pour mettre à jour périodiquement les données dans mon Activité. J'ai créer le fil et commencer un looper à l'aide d'un gestionnaire avec postDelay()
. Dans onDestroy() pour mon activité, j'appelle removeCallbacks() sur mon gestionnaire.
Dois-je puis appeler handler.getLooper().quit()
? Ou vous inquiétez pas et laissez le système d'exploitation traiter avec elle? Ou serait-ce tout simplement courir pour toujours, consommation de cycles de PROCESSEUR?
OriginalL'auteur stormin986 | 2010-05-08
Vous devez vous connecter pour publier un commentaire.
Selon la Android Documentation vous devriez appeler quit().
Lorsque vous appelez
Looper.loop()
une boucle while est commencé. L'appel deLooper.quit()
provoque l'arrêt de la boucle. Le garbage collector ne peut pas recueillir votre objet lors de l'exécution de la boucle.Voici la section pertinente de Looper.java:
OriginalL'auteur Jonathan
Je n'ai pas maintenant la réponse correcte, mais à en juger par plusieurs documentations et tutoriels que j'ai vu sur Internet, aucun d'entre eux gestionnaire d'appel.getLooper().quit(). Donc, je suppose que ce n'est pas nécessaire de le faire explicitement.
Mais il n'y a vraiment aucun inconvénient si vous venez d'ajouter ce one-liner à votre onDestroy() la méthode?
OriginalL'auteur
Ajoutant à la ci-dessus réponse par Jonathan, veuillez choisir judicieusement entre quitter() et quitSafely() comme quit() résilier sans traitement plus de messages dans la file d'attente de messages où que quitSafely() s'arrête dès que tous les autres messages dans la file d'attente de messages qui sont déjà dû être livrées ont été traitées
OriginalL'auteur kAmol