Quand désinscrire un récepteur de diffusion enregistré dans onCreate?
Dans Android, j'ai enregistré un BroadcastReceiver dans mon onCreate(). Où dois-je me désinscrire pour ne pas avoir de fuite de récepteurs?
source d'informationauteur michael
Vous devez vous connecter pour publier un commentaire.
http://developer.android.com/reference/android/content/BroadcastReceiver.html
"Vous pouvez soit enregistrer dynamiquement une instance de cette classe avec le Contexte.registerReceiver() ou statique publier une mise en œuvre par le biais de la balise dans votre AndroidManifest.xml. Remarque: Si l'enregistrement d'un récepteur dans votre Activité.onResume() de la mise en œuvre, vous devez annuler l'inscription dans l'Activité.onPause(). (Vous ne recevrez pas les intentions après la pause, et ceci vous permettra de réduire inutilement la charge du système). Ne pas annuler l'enregistrement de l'Activité.onSaveInstanceState()."
🙂 Le kit de développement est votre meilleur ami. Je dirais qu'il dit dans le SDK, sauf si vous avez absolument besoin du récepteur lors de la pause, mais soyez prudent. Avez-vous d'enregistrer dynamiquement le récepteur ou serait de le mettre dans le AndroidManifest.xml de mieux? Si vous placez le récepteur dans le manifeste, vous n'aurez pas besoin de s'inquiéter à propos de l'enregistrement/annulation de l'enregistrement.
Jusqu'à présent j'ai connu 2 cas de la dynamique du récepteur de radiodiffusion de l'inscription:
-> Ensuite, le récepteur de radiodiffusion devraient être inscrits dans onResume et non dans onPause. Cas Normal donnée dans la documentation officielle (http://developer.android.com/reference/android/content/BroadcastReceiver.html).
-> Ensuite, le récepteur de radiodiffusion devraient être enregistrés dans le onCreate et non dans onDestroy (confirmé par Comment faire pour annuler l'inscription de BroadcastReceiver). Si non, quand l'application sera en pause la onReceive() la méthode ne sera pas appelé.
Attention tout de même, onDestroy n'est pas garanti d'être appelé (point soulevé dans Android - Quand s'Inscrire/Désinscrire des Récepteurs de Radiodiffusion créé dans une activité?) de sorte que vous devrez assurez-vous qu'il est appelé à un certain point (Activité terminée), pas sûr que c'est la meilleure pratique.
Maintenant pourquoi devrait-il être enregistrées de façon dynamique?
Si il n'y a aucune bonne raison pour que pour que ce récepteur de radiodiffusion, alors vous devriez probablement faire inscrire dans le fichier de manifeste avec la bonne intention de filtre pour ne pas être gêné par l'inscription/désinscription plus.
Lorsque vous êtes regeistering votre récepteur de radiodiffusion dans sur la méthode de création, il me serait mieux si vous désinscrire en
onDestroy()
méthode.c'est juste une remplacer la méthode appelée lorsque votre application est détruit.Vous devez vous désinscrire quand vous ne voulez pas ou ne pouvez pas recevoir les émissions plus.