onStop vs onDestroy
Я пытался исследовать, когда именно метод onDestroy вызывается для выполнения действия, но я прочитал некоторую запутанную и противоречивую информацию. В общем, мой вопрос таков: при каких обстоятельствах метод onDestroy фактически вызывается на действие? Более конкретно, если у меня есть два действия, Действие А и действие В, если действие а выполняется, и я создаю намерение и переключаюсь на действие в, то действие а только остановлено или оно уничтожено?
2 ответов:
Как указано в официальной документации:
onDestroy()последний вызов, который вы получите, прежде чем ваша деятельность будет уничтожена. Это может произойти либо потому, что действие завершается (кто-то вызвал finish() на нем, либо потому, что система временно уничтожает этот экземпляр действия, чтобы сэкономить место. Вы можете различать эти два сценария с помощью метода isFinishing ().
В вашем примере действие A остановлено и может быть уничтожено Система
Примечание по ссылкеdocumentationвыше:...не рассчитывайте на то, что [onDestroy()] будет вызвано как место для сохранения данных ... [см.] либоonPause(), либоonSaveInstanceState(Bundle).
onDestroy()вызывается всякий раз, когда:
- пользователь выводит действие с экрана "последние приложения".
- пользователь выводит действие с экрана "последние приложения".
onStop()вызывается всякий раз, когда:
- пользователь оставляет текущую активность.
Итак, в вашем примере, когда пользователь запускает действие B, действие A называется
onStop().EDIT : Согласно документации, метод
onDestroy()вызывается не всегда.onStop()является всегда вызывается начиная с Honeycomb, поэтому переместить код, который вы явно должны сделать, прежде чем действие остановится, туда.Начиная с Honeycomb, приложение не находится в состоянии killable, пока не вернется его onStop (). https://developer.android.com/reference/android/app/Activity#ActivityLifecycle
Надеюсь, это помогло: D
Comments