Ответ 1
Согласно документации, SECOND.onResume() должен вызываться до FIRST.onStop() https://developer.android.com/guide/components/activities/activity-lifecycle.html#soafa (Координация действий раздел)
Я хочу запустить Activity (SECOND Activity) из другого действия (FIRST Activity), вызвав startActivity(intent)
. Прежде чем я это сделаю, я обнаружил, что люди говорят, что методы жизненного цикла вызывают в следующем порядке:
FIRST Activity onCreate
FIRST Activity onStart
FIRST Activity onResume
FIRST Activity onPause
SECOND Activity onCreate
SECOND Activity onStart
SECOND Activity onResume
FIRST Activity onStop
Всегда ли SECOND Activity onResume
вызывается до FIRST Acitivity onStop
? Я думал, что
FIRST Activity onPause
FIRST Activity onStop
SECOND Activity onCreate
SECOND Activity onStart
SECOND Activity onResume
но это не так.
Кроме того, если я просто переключаюсь между двумя действиями,
FIRST Activity onPause
SECOND Activity onRestart
SECOND Activity onStart
SECOND Activity onResume
FIRST Activity onStop
Всегда ли вызываются методы в этом порядке?
Согласно документации, SECOND.onResume() должен вызываться до FIRST.onStop() https://developer.android.com/guide/components/activities/activity-lifecycle.html#soafa (Координация действий раздел)
Предположим, есть два действия FirstActivity
и SecondActivity
.
Тогда этот порядок всегда будет оставаться неизменным.
//когда вы запускаете FirstActivity
(1) OnCreate() → OnStart() → OnResume() of
FirstActivity
will be called
когда вы запускаете SecondActivity с помощью startActivity (новое намерение (FirstActivity.this, SecondActivity.class))
(2) OnPause() из FirstActivity будет вызываться, а затем
(3) OnCreate() → OnStart() → OnResume() of SecondActivity will be Called then
(4) OnStop() из FirstActivity будет называться
//когда вы нажимаете кнопку возврата на SecondActivity
(5) OnPause() из SecondActivity будет вызываться затем
(6) OnRestart() → OnStart() → OnResume() of FirstActivity will be called then
(7) onStop() → onDestroy() of SecondActivity will be called
Note:
(1) OnPause() will be called first when you navigate to any other activity.
(2) OnStop() will be called when activity is no longer Visible on screen.
Сначала открывается активность: OnCreate(), OnStart(), onResume()
Пользователь нажимает backButton(): OnPause(), OnStop(), OnDestroy()
Переход на другой экран:
Первый экран:: onPause(), onStop()
Второй экран: onCreate(), OnStart(), onResume()
Нажимает кнопку в действии 2:
Второй экран: onPause(), onStop(), onDestroy()
Первый экран: onRestart(), onStart(), onResume()
Пользователь блокирует устройство: onPause(), onStop()
Снова открывает блокировку: onRestart(), onStart(), onResume()