onStop vs onDestroy



Я пытался исследовать, когда именно метод onDestroy вызывается для выполнения действия, но я прочитал некоторую запутанную и противоречивую информацию. В общем, мой вопрос таков: при каких обстоятельствах метод onDestroy фактически вызывается на действие? Более конкретно, если у меня есть два действия, Действие А и действие В, если действие а выполняется, и я создаю намерение и переключаюсь на действие в, то действие а только остановлено или оно уничтожено?

524   2  

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

    Ничего не найдено.