Я думаю, что мои идеи относительно жизненного цикла действий и пакетов
совпадают с немного запутался, вы можете мне помочь?
Предположим, пользователь открывает действие A с главного экрана,
действие A «вызывает» действие B , которое заполняет экран.
В этом событии onSaveInstanceState ()
вызывается для действия A , затем onPause ()
и onStop ()
.
Поскольку в настоящее время в системе работает слишком много приложений,
andorid решает убить процесс, на котором выполняется действие A .
Когда пользователь возвращается к действию A , вызывается onCreate (), и мы можем
использовать пакет (установленный во время последнего вызова onSaveInstaceStae ()) для восстановления состояние.
затем вызываются onStart ()
, onRestoreInsanceState ()
и onResume ()
,
am Я правильно?
Тогда предположим, что пользователь нажимает клавишу возврата, чтобы выйти из действия 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 ()
.