OnPause () до onStopped () в жизненном цикле активности

В жизненном цикле Андоида Активности, почему активность проходит через onPause() прежде чем перейти к onStopped() ? Почему государство не может перейти непосредственно к onStopped() ?

Потому что документация говорит так 🙂

И это имеет смысл. Приложение открыто, и пользователь нажал кнопку home: onPause() . Через некоторое время система нуждается в памяти и закрывает приложение: onStop() .

Приостановлены и остановлены связаны друг с другом, но разные состояния. С точки зрения пользователя, приостановленная деятельность не может взаимодействовать, но все же может быть видимой (например, если она вызвала другое действие в качестве диалога). Гарантированное прекращенное действие не будет отображаться вообще (использование выполняется в другом действии или даже в другом приложении).

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

Конечно, прекращение подразумевает паузу, но обратное не так.

Из официальной документации .

  • Если активность на переднем плане экрана (вверху стека) активна или работает .
  • Если активность потеряла фокус, но все еще видна (то есть, новая не полноразмерная или прозрачная деятельность фокусируется на вашей деятельности), она приостанавливается . Приостановленная активность полностью живая (она поддерживает всю информацию о состоянии и членах и остается прикрепленной к диспетчеру окон), но может быть убита системой в ситуациях с крайне низкой памятью.
  • Если действие полностью закрыто другой деятельностью, оно прекращается . Он по-прежнему сохраняет всю информацию о состоянии и членах, однако он больше не виден пользователю, поэтому его окно скрыто, и оно часто будет убито системой, когда требуется память в другом месте.

Еще более подробное объяснение приводится в статье « Управление жизненным циклом деятельности» в разделе «Обучение» на сайте разработчиков Android.

Обратитесь к документации по мероприятиям:

http://developer.android.com/reference/android/app/Activity.html

OnPause ()

«Вызывается, когда система вот-вот начнет возобновление предыдущего действия. Обычно это используется для передачи несохраненных изменений в постоянные данные, остановки анимации и других вещей, которые могут потреблять процессор и т. Д. Реализации этого метода должны быть очень быстрыми, потому что следующий Активность не будет возобновлена ​​до тех пор, пока этот метод не вернется. Затем следует либо onResume (), если операция возвращается к фронту, либо onStop (), если она становится невидимой для пользователя ».

Примечание: я бы сказал «возобновить другую деятельность» вместо «возобновления превентивной деятельности».

OnStop ()

«Вызывается, когда действие больше не видимо для пользователя, потому что другое действие возобновлено и распространяется на него. Это может произойти либо потому, что начинается новое действие, либо предшествует этому, либо уже существующее. Этот объект уничтожается, а затем – onRestart (), если это действие возвращается, чтобы взаимодействовать с пользователем, или onDestroy (), если эта активность уходит ».

Потому что, onPaused () выполняется, когда ваше приложение повернуто или открыт диалог. OnStop (), когда ваше приложение не находится на экране, поэтому необходимо, чтобы эти два момента на жизненном цикле для пользователя или программиста могли определить, какое действие выполнено.