Снова о жизненном цикле активности: onStart вызывается, когда этого не должно быть.

Прежде всего, я прочитал отличное объяснение того, как действия начинаются, приостанавливаются, возобновляются и останавливаются. . Все хорошо, но у меня другая проблема.

Диаграмма жизненного цикла Activity в справочнике по Android показывает, что если я вызвать другую активность, onPause() будет вызываться для вызывающей активности, а позже, когда другая активность завершится, вызывающая сторона возобновит работу через onResume().

Таким образом, если первое действие — Main, а второе — Other, цикл будет выглядеть так (псевдокод):

Main.onCreate()
Main.onStart()
Main.onResume()
// Main is running...  Then, the user clicks a button and Other comes in front.
Main.onPause()
Other.onCreate()
// Other's lifecycle goes here... Finally, the user returns back.
Main.onResume()
// Main is running again.

Об этом говорит схема. Но мой Main сначала получает onStart(), а затем onResume().

Почему это? Я что-то неправильно понимаю?


person Alexander Dunaev    schedule 07.05.2012    source источник


Ответы (2)


Это происходит потому, что ваша основная активность полностью исчезает из поля зрения, что вызывает onStop, который запускает OnStart, когда вы возобновляете работу. Если бы вы только частично скрыли представление от вашего Main, вы бы получили только onResume.

Если вы посмотрите на диаграмму, между onPause и onStop есть это «активность больше не видна»... это то, с чем вы сталкиваетесь.

Для справки, график жизненного цикла активности:

введите здесь описание изображения

person Barak    schedule 07.05.2012
comment
спасибо за напоминание проверить график. Я всегда забываю это проверить. Решил мою проблему. - person Brandon; 25.10.2016

Одна из причин, по которой ваш onStart() вызывается для основного приложения, заключается в том, что ваша основная активность останавливается. То есть вызывается его onStop(). В этом сценарии сначала будет вызван onStart(), а затем onResume().

person sachy    schedule 07.05.2012