2013-07-25 11 views
18

In der Android Application-Klasse können Sie ActivityLifecycleCallbacks registrieren/die Registrierung aufheben, mit der Sie Aktivitätenlebenszyklusereignisse in Ihrer Anwendung an einem Ort überwachen können (falls Sie dies wünschen).Was ist die richtige Methode zum Aufheben der Registrierung von Activity Lifecycle Callbacks?

Wo ist der richtige Ort zum anrufen unregisterActivityLifecycleCallbacks? Ich bin Registrierung in onCreate, und dachte, dass OnTerminate nur die richtige Stelle aus dem Namen der Methode wäre, aber die docs sagen für OnTerminate():

Diese Methode ist für den Einsatz in Prozessumgebungen emuliert . Es wird niemals auf einem Android-Produktionsgerät aufgerufen werden, wo Prozesse durch einfaches Töten entfernt werden; kein Benutzercode (einschließlich dieses Callbacks) wird dabei ausgeführt.

Ich sehe keine anderen Methoden in der Application-Klasse, bei denen ein 'Herunterfahren' Callback erfolgt. Müssen Sie sich sogar abmelden?

+0

Ich bin wirklich neugierig, was Sie erreichen wollen. Wenn Sie die Registrierung aufheben, müssen Sie nicht mehr darauf achten, dass Ihre Anwendung abstürzt, wenn Ihre Anwendungsklasse abstürzt, sodass Sie die Registrierung wahrscheinlich nach dem Aufruf von super() einige Mikrosekunden vor dem Prozess abbrechen würden. Ich nehme an, dass der Zweck der Aufhebung der Registrierung darin besteht, dass Sie das Verhalten zur Laufzeit ändern können. – Simon

Antwort

18

Simon hatte Recht damit. registerActivityLifecycleCallbacks erfordert keinen übereinstimmenden Anruf an unregisterActivityLifecycleCallbacks. Wie in this SO question beschrieben, können Sie nicht feststellen, wenn Ihre Anwendung getötet wird. Es gibt also keinen "logischen" Ort, an dem Sie Ihren Rückruf rückgängig machen können. Und selbst wenn es war, wird Ihre Application Instanz getötet nach die letzte Activity Aktion findet statt, und die Tötung Ihrer Application tötet die mActivityLifecycleCallbacks Liste, die sowieso den Verweis auf Ihren Rückruf enthält.

TL; DR - Machen Sie sich keine Sorgen über den Anruf unregisterActivityLifecycleCallbacks, es ist nur dort, wenn Sie stoppen möchten Activity Aktionen während Ihres normalen Lebenszyklus Application.