Wenn Sie sich in onCreate()
registrieren, müssen Sie die Registrierung in onDestroy()
aufheben. Wenn Sie die Registrierung in onStop()
aufheben möchten, müssen Sie sich in onStart()
registrieren.
Sehen Sie sich den Aktivitätslebenszyklus hier Ссылка
an
Der Grund dafür ist, dass onStop()
aufgerufen wird, wenn Activity
in den Hintergrund tritt, aber nicht unbedingt zerstört wird. Wenn der Activity
in den Vordergrund zurückkehrt, wird onStart()
aufgerufen, aber nicht onCreate()
, so dass der BroadcastReceiver
nicht erneut registriert wird. Wenn dann Activity
wieder in den Hintergrund tritt, versucht onStop()
, die Registrierung wieder aufzuheben, aber der Empfänger wurde nicht registriert.
Sie müssen auch den LocalBroadcastManager
verwenden, um die Registrierung Ihres Empfängers aufzuheben, wenn Sie ihn wie folgt zur Registrierung verwendet haben:
%Vor%
LocalBroadcastManager
ist eine Klasse aus der Support-Bibliothek :
Helfer, um Broadcasts von Intents für lokale Objekte innerhalb Ihres Prozesses zu registrieren und zu senden.
Dies unterscheidet sich von den gleichen Methoden in Context
, die systemweite Broadcasts erlauben.
Siehe auch eine ähnliche Frage / Antwort hier .