Подтвердить что ты не робот

Каков правильный способ отмены регистрации обратных вызовов жизненного цикла активности?

В классе приложений Android вы можете зарегистрировать/отменить регистрацию ActivityLifecycleCallbacks, которые позволяют отслеживать события жизненного цикла Activity в приложении все в одном место (если вы так желаете).

Где подходящее место для вызова unregisterActivityLifecycleCallbacks? Я регистрируюсь в onCreate и думал, что onTerminate будет подходящим местом только от имени метода, но документы говорят для OnTerminate():

Этот метод предназначен для использования в эмулируемых средах процессов. Это никогда не будет быть вызваны на производственном устройстве Android, где процессы удаляются просто убивая их; никакой код пользователя (включая этот обратный вызов) не является выполняются при этом.

Я не вижу других методов в классе Application, где выполняется обратный вызов типа "shutdown". Вам даже нужно отменить регистрацию?

4b9b3361

Ответ 1

Simon был прав. registerActivityLifecycleCallbacks не требует соответствующего вызова unregisterActivityLifecycleCallbacks. Как описано в этом SO-вопросе, вы не можете обнаружить, когда ваше приложение убито. Таким образом, нет никакого "логического" места для отмены регистрации вашего обратного вызова. И даже если бы ваш экземпляр Application был убит после, последнее действие Activity происходит, а убийство вашего Application убивает список mActivityLifecycleCallbacks, в котором содержится ссылка на ваш обратный вызов в любом случае.

TL; DR - Не беспокойтесь о вызове unregisterActivityLifecycleCallbacks, он только там, если вы хотите прекратить отслеживать действия Activity во время обычного жизненного цикла Application.