Каков правильный способ отмены регистрации обратных вызовов жизненного цикла активности?
В классе приложений Android вы можете зарегистрировать/отменить регистрацию ActivityLifecycleCallbacks, которые позволяют отслеживать события жизненного цикла Activity в приложении все в одном место (если вы так желаете).
Где подходящее место для вызова unregisterActivityLifecycleCallbacks? Я регистрируюсь в onCreate и думал, что onTerminate будет подходящим местом только от имени метода, но документы говорят для OnTerminate():
Этот метод предназначен для использования в эмулируемых средах процессов. Это никогда не будет быть вызваны на производственном устройстве Android, где процессы удаляются просто убивая их; никакой код пользователя (включая этот обратный вызов) не является выполняются при этом.
Я не вижу других методов в классе Application, где выполняется обратный вызов типа "shutdown". Вам даже нужно отменить регистрацию?
Ответы
Ответ 1
Simon был прав. registerActivityLifecycleCallbacks
не требует соответствующего вызова unregisterActivityLifecycleCallbacks
. Как описано в этом SO-вопросе, вы не можете обнаружить, когда ваше приложение убито. Таким образом, нет никакого "логического" места для отмены регистрации вашего обратного вызова. И даже если бы ваш экземпляр Application
был убит после, последнее действие Activity
происходит, а убийство вашего Application
убивает список mActivityLifecycleCallbacks
, в котором содержится ссылка на ваш обратный вызов в любом случае.
TL; DR - Не беспокойтесь о вызове unregisterActivityLifecycleCallbacks
, он только там, если вы хотите прекратить отслеживать действия Activity
во время обычного жизненного цикла Application
.