Ich versuche, die wichtigsten Unterschiede zwischen der Registrierung eines BroadcastReceiver im Manifest und Registrierung es programmatisch zu verstehen ...Hauptunterschied zwischen Manifest und Programmatische Registrierung von BroadcastReceiver
Mein Verständnis ist im Grunde wie folgt (würde schätzen, jemand zu korrigieren mein Punkte, wenn ich etwas vermisse).
in Manifest Registriert:
- Das OS wird auf magische Weise finden und Ihre Klasse instanziiert, wenn nötig, die OnReceive() -Methode aufrufen, egal, was der Betriebszustand der Anwendung war
- Ihr erhalten wird nur einmal pro Broadcast aufgerufen (dh Sie können davon ausgehen, dass die Registrierung im Manifest der Registrierung Ihrer "Klasse" für den Empfang der Broadcast entspricht - und die Broadcast instanziiert Ihre Klasse nach Bedarf) (??)
Registrierte Programmatically:
- in Code Registrierung bedeutet, dass Sie Instanzen Ihrer Klasse registrieren Broadcast-Nachrichten zu empfangen (d Wenn Ihr Code ein wenig schlampig ist und Sie sich mehrfach registrieren, werden Sie mehrere BroadcastReceiver-Instanzen haben, deren onReceive() -Aufruf für eine Übertragung
- zur Registrierung aufgehoben wird. Sie müssen die spezifische BroadcastReceiver-Instanz, die Sie haben, aufheben zuvor registrierten
- , wenn Ihre Anwendung durch das Betriebssystem, Ihre OnReceive() -Methode für eine Übertragung nicht
dank
Und ich denke, wenn Ihr Dienst abstürzt, wo Ihr broadcastreceiver im Manifest deklariert ist, empfängt der Empfänger immer noch die Nachrichten ... – Boy
@Boy: Ja, sollte es. – CommonsWare
bitte können Sie nachschlagen, wenn das mit meinem Problem in Verbindung stand: http://StackOverflow.com/Questions/29728000/Wifi-changed-Status-Affecting-My-App –