В моей деятельности я перегрузил onDestory()
и просто поместил вызов журнала, чтобы показать, вызван ли этот метод. (Проверено на Android 4.2.2 и 4.4.4)onDestroy() вызывается, когда нажата кнопка «Назад»
@Override
protected void onDestroy() {
Log.i(TAG, "onDestroy() was called");
super.onDestroy();
}
Когда я нажимаю кнопку назад, этот метод вызывается (Я видел журнал).
Я считаю, что этого не должно произойти, если телефон не получает памяти или что-то в этом роде. У меня нет ничего особенного в приложении, кроме MainActivity и некоторых фрагментов.
Вот журнал, когда пользователь находится в MainActivity и нажимает на кнопку назад:
I/MainActivity? onBackPressed() was called
I/MainActivity? onStop() was called
I/MainActivity? onDestroy() was called
Почему это происходит?
Я также проверил для isFinishing()
в onPause()
и она всегда возвращает true
Из Javadoc:
Выполните любую окончательную очистку перед тем, как деятельность будет уничтожена. Это может произойти либо потому, что деятельность заканчивает (кто-то назвал отделку на него, или потому, что система временно разрушив этот экземпляр деятельности для экономии места. Вы можете различать эти два сценариев с помощью метода isFinishing. Примечание: не рассчитывайте на этом метод вызывается в качестве места для сохранения данных
Нононо, вы поняли, что это неправильно. Он вызывается, когда «Активность» уничтожается, а в простейшем случае, когда вы закрываете его, нажимая кнопку «Назад». См. [Жизненный цикл активности] (http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle) для получения дополнительной информации. –
@AndrewT.Java-документ говорит, что это может произойти. он не говорит, что это произойдет. это смущает! –
И довольно забавно возникает вопрос в SO, спрашивающий, почему onDestroy не вызван на спину нажатой! –