Жизненный цикл деятельности? - PullRequest
6 голосов
/ 18 ноября 2011

Я думаю, что мои идеи о жизненном цикле деятельности и связках
немного смущены, вы можете мне помочь?

Предположим, что пользователь открывает действие A с главного экрана,
действие A «вызывает» действие B , которое заполняет экран.
В этом событии onSaveInstanceState() вызывается для действия A , затем onPause() и onStop().
Поскольку в настоящее время в системе запущено слишком много приложений,
andorid решает прекратить процесс размещения активности A .

Когда пользователь возвращается к занятию A , onCreate () вызывается как мы можем
используйте пакет (установленный во время последнего вызова onSaveInstaceStae ()) для восстановления состояния. затем onStart(), onRestoreInsanceState()
и onResume() называются
я прав?

Затем предположим, что пользователь нажимает клавишу «Назад» для выхода из действия A
onPause(), onStop() и onDestory() вызываются последовательно при мероприятии A (хотя вызов onDestroy() может быть отложен) onSaveInsanceState() не следует вызывать в этом сценарии.

Когда пользователь снова открывает действие A позже, тогда пакет
передано onCreate () равно нулю, верно?

Теперь предположим, что пользователь поворачивает экран onSaveInsanceState(), OnPause(), OnStop(), OnDestroy() называются
затем onCreate() с набором, установленным последним вызовом на onSaveInsanceState(),
а затем onStart () и onRestore (). я прав?

Я думаю, что:

когда пользователь создает действие, пакет, переданный в onCreate(), всегда имеет значение null, а onRestoreState() никогда не вызывается, но когда система создает его, например, когда он завершил действие из-за нехватки памяти или из-за событие поворота, переданный пакет является тем, который установлен последним вызовом onSaveInstanceState ().

Правильно ли мое предположение?

спасибо и извините за мой плохой английский.

P.S. : Я думаю, что onRestoreInstanceState() передается так же, как и onCreate(), но обычно состояние восстанавливается с помощью onCreate().

Ответы [ 3 ]

0 голосов
/ 07 августа 2014

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

0 голосов
/ 20 февраля 2017

Поскольку в настоящее время в системе запущено слишком много приложений, andorid решает прекратить действие хостинга процесса A.

Это очень распространенная ситуация.Более того - вы можете эмулировать это действие, используя опцию разработчиков.

enter image description here

В этом случае каждое действие, которое было перемещено в фон, будет автоматически уничтожено.

О Bundle в OnCreate.

Я могу получить из моей памяти только два случая, когда OnCreate будет вызываться с ненулевым Bundle.Сначала - описано выше.Второй случай - поворот экрана.

При запуске приложения Android вызывает

  • onCreate
  • onStart
  • onResume

После этого позволяет делать поворот экрана.Android будет вызывать

  • onSaveInstanceState
  • onPause
  • onStop
  • onDestroy
  • onCreate
  • onStart
  • onRestoreInstanceState
  • onResume

Чем больше информации вы можете найти по теме о воссоздании

0 голосов
/ 18 ноября 2011

Интересный вопрос - никогда не думал об этом.

Посмотрите документацию, onCreate() и onSaveInstanceState().

Это отвечает, по крайней мере, на ваш вопрос, что Bundle будет поставляться на onCreate().

К сожалению, нет точного определения, для каких событий вызывается onSaveInstanceState(), но я думаю, что он вызывается по умолчанию во всех соответствующих ситуациях (какими бы они ни были ...), но вы можете выяснить в некоторых ситуациях (например, вращая экран), поместив Log.i () в LogCat.

...