2010-12-14 55 views
0

Quand mon application Android doit enregistrer un récepteur, je suis dans l'enregistrement Activity.onCreate() et désinscription dans Activity.onDestroy() (je pense que je suis censé être en utilisant à la place onPause() et onResume(), mais ce n'est pas vraiment le point):Les récepteurs Android se désinscrire automatiquement à la fermeture de l'application?

public class Foo extends Activity { 
    private Receiver bar = null; 

    @Override public void onCreate(Bundle bundle) { 
     this.registerReceiver(this.bar = new Receiver(), new IntentFilter()); 
    } 

    @Override public void onDestroy(Bundle bundle) { 
     this.unregisterReceiver(this.bar); 
    } 
} 

La désinscription du récepteur est-elle réellement nécessaire ou la structure s'en chargera-t-elle lorsque ma demande se terminera?

+0

BTW, l'appel onDestroy n'est pas garanti car Android pourrait simplement tuer votre processus. – Yaroslav

+0

@Yaroslav J'ai dit "Je pense que je suis censé utiliser onPause() et onResume() à la place, mais ce n'est pas vraiment le point" –

Répondre

0

Si vous enregistrez un récepteur dans votre implémentation Activity.onResume(), vous devez l'annuler dans Activity.onPause(). (Vous ne recevrez pas les intentions en pause, ce qui réduira le surdébit inutile du système)

+0

Ignorer cela, est-il réellement nécessaire de désinscrire un récepteur lorsque votre application est sur le point de quitter ? –

+0

Voulez-vous réveiller votre application si elle ne fonctionne pas? Si c'est le cas, vous pouvez l'enregistrer dans votre fichier manifeste et c'est tout. Sinon, désinscrivez le destinataire avant que l'utilisateur quitte l'application – ggomeze