Жизненный цикл активности Android: государственный порядок при запуске новой активности - PullRequest
7 голосов
/ 01 апреля 2012

Если я запускаю Activity2 из Activity1 следующим образом: startActivity(Activity2);, что выполняется первым: onStop() (Activity1) или onStart() (Activity2)?

Они работают одновременно или по очереди? Если один за другим, что первым?

Итак, в целом: каков порядок выполнения операции, когда первая активность начинается второй, если этот порядок существует?

Ответы [ 6 ]

17 голосов
/ 11 апреля 2017

Let Say Activity A запускает Activity B, вызывая метод StartActivity (Intent) , тогда вызов жизненного цикла будет таким: -

  • A onCreate ()
  • OnStart ()
  • A onResume ()

Теперь Нажатие кнопки для запускаActivity (намерение) A onPause ()

B onCreate ()

B onStart ()

B onResume ()

A onStop ()

..... Если вы нажмете кнопку возврата из упражнения B, вызов lifeCycle будет .....

  • B onPause ()

  • A onRestart ()

  • OnStart ()

  • A onResume ()

  • B onStop ()
  • B onDestory ()

Теперь еще один сценарий"Из действия A запустите действие B, вызвав StartActivity (Intent) по нажатию кнопки, и используйте метод finish () внутри метода onstart () в действии B"

  • A onPause ()

  • B onCreate ()

  • B onStart ()

  • A onResume ()

  • B onStop ()

  • B onDestory ()

10 голосов
/ 02 мая 2012

Согласно документации, onStart на Activity2 вызывается перед onStop на Activity1 (или, если вы предпочитаете, ОС ожидает завершения onStart на Activity2, прежде чем вызывать onStop для Activity1).

С http://developer.android.com/guide/topics/fundamentals/activities.html:

Порядок обратных вызовов жизненного цикла четко определен, особенно когда два действия находятся в одном и том же процессе, и одно запускает другое. Вот порядок операций, которые происходят, когда действие A запускает действие B:

Выполняется метод onPause () операции А. Методы onCreate (), onStart () и onResume () действия B выполняются последовательно. (Деятельность B теперь имеет фокус на пользователя.) Затем, если действие A больше не отображается на экране, выполняется его метод onStop ().

2 голосов
/ 01 апреля 2012

Ключ к пониманию того, как начинается деятельность. Когда вы публикуете Intent в методе startActivity (), вы просто просите систему запустить это действие. Следующая система пытается запустить Activity2 и отправляет сообщение Activity1. Порядок не определен и может быть разным в разных ситуациях.

Похоже, мой ответ был неправильным для ситуации, когда оба действия работают в одном и том же процессе (приложение) Как отметил Даниил Попов: https://developer.android.com/guide/components/activities/activity-lifecycle.html (Секция координации деятельности)

1 голос
/ 01 апреля 2012

Когда мы переходим от первого занятия ко второму, После вызова метода onPause () следует onStop (), а затем вызывается метод второй операции onCreate (), затем onStart () и затем onResume ().

Также при возврате в исходное положение нажатием клавиши возврата

вызывается метод второй активности onPause (), затем onStop (), затем вызывается метод первой активности onRestart (), затем onStart () и затем onResume ().

0 голосов
/ 06 мая 2017

Порядок обратных вызовов жизненного цикла четко определен, особенно когда два действия находятся в одном и том же процессе, и одно запускает другое.Вот порядок операций, которые происходят, когда действие A запускает действие B:

Выполняется метод onPause () операции A.Методы onCreate (), onStart () и onResume () действия B выполняются последовательно.(Действие B теперь имеет фокус пользователя.) Затем, если действие A больше не отображается на экране, выполняется его метод onStop ().

0 голосов
/ 01 апреля 2012

Используйте Журнал для публикации логов в Logcat.

Log.v("STATE", "Pause...and so on");
...