Android 奇怪的活动生命周期。
当我第一次从主活动启动活动时,它会经过onCreate()然后onStart()。在应用程序中,如果我关闭屏幕,它将转到onPause(),在那里我保存一些数据。然后立即转到onStop(),然后转到onDestroy(),然后再次转到onCreate(),onStart(),onPause(),而不打开屏幕。 是否应该在onDestroy()之后立即转到onCreate()、onStart(),而我不做任何操作Android 奇怪的活动生命周期。,android,Android,当我第一次从主活动启动活动时,它会经过onCreate()然后onStart()。在应用程序中,如果我关闭屏幕,它将转到onPause(),在那里我保存一些数据。然后立即转到onStop(),然后转到onDestroy(),然后再次转到onCreate(),onStart(),onPause(),而不打开屏幕。 是否应该在onDestroy()之后立即转到onCreate()、onStart(),而我不做任何操作 @Override protected void onCreate(Bundle
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_timegame);
}
@Override
protected void onResume() {
super.onStart();
if (checkFirstTimeRun())
initializeGame();
else
resumeGame();
}
@Override
protected void onPause() {
super.onPause();
saveGameData();
}
简短的解释(
考虑到您没有使用片段)
):
- 活动的创建是
,OnCreate
,OnStart
OnResume
- 当您再次旋转屏幕时,
,OnPause
,OnStop
OnDestroy
,OnCreate
,OnStart
,因为活动在方向更改时被销毁并重新创建OnResume
OnCreate
,OnStart
,OnResume
将不会第二次触发强>
了解执行哪些事件以及何时执行:
一个用例示例(
考虑到您正在使用片段):
示例项目:
我有一个开源项目,并执行它,查看日志以了解>事件序列一个接一个地执行(我在这个项目中也有片段,如果您不需要它,请排除>片段日志)
项目观察
- 如果路径为
Activity
-FragmentOne
,并且第一次更改方向,则触发的事件如下
main活动onCreate
-
FragmentOne-onAttach
-
FragmentOne onCreate
-
FragmentOne onCreateView
-
activitycreated上的FragmentOne
-
FragmentOne启动
-
FragmentOne-onResume
- 如果路径为
Activity
-FragmentOne
-orientationchange
并首次更改方向,则触发的事件如下
main活动onCreate
-
FragmentOne-onAttach
-
FragmentOne onCreate
-
FragmentOne onCreateView
-
activitycreated上的FragmentOne
-
FragmentOne启动
-
FragmentOne-onResume
-
FragmentOne onPause
-
FragmentOne onSaveInstanceState
-
FragmentOne在顶部
-
FragmentOne onDestroy
-
FragmentOne onDetach
-
main活动onCreate
-
FragmentOne-onAttach
-
FragmentOne onCreate
-
FragmentOne onCreateView
-
activitycreated上的FragmentOne
-
FragmentOne启动
-
FragmentOne-onResume
- 如果路径为
Activity
-FragmentOne
-orientationchange
-orientationchange
,并第一次更改方向,则触发的事件如下
main活动onCreate
-
FragmentOne-onAttach
-
FragmentOne onCreate
-
FragmentOne onCreateView
-
activitycreated上的FragmentOne
-
FragmentOne启动
-
FragmentOne-onResume
-
FragmentOne onPause
-
FragmentOne onSaveInstanceState
-
FragmentOne在顶部
-
FragmentOne onDestroy
-
FragmentOne onDetach
-
main活动onCreate
-
FragmentOne-onAttach
-
FragmentOne onCreate
-
FragmentOne onCreateView
-
activitycreated上的FragmentOne
-
FragmentOne启动
-
FragmentOne-onResume
-
FragmentOne onPause
-
FragmentOne onSaveInstanceState
-
FragmentOne在顶部
-
FragmentOne onDestroy
-
FragmentOne onDetach
-
main活动onCreate
-
FragmentOne-onAttach
-
FragmentOne onCreate
-
FragmentOne onCreateView
-
activitycreated上的FragmentOne
-
FragmentOne启动
-
FragmentOne-onResume
- 如果路径是
Activity
-FragmentOne
-orientationchange
-orientationchange
-FragmentTwo
并第一次更改方向,则触发的事件如下
main活动onCreate
-
FragmentOne-onAttach
-
FragmentOne onCreate
-
FragmentOne onCreateView
-
activitycreated上的FragmentOne
-
FragmentOne启动
-
FragmentOne-onResume
-
FragmentOne onPause
-
FragmentOne onSaveInstanceState
-
FragmentOne在顶部
-
FragmentOne onDestroy
-
FragmentOne onDetach
-
main活动onCreate
-
FragmentOne-onAttach
-
FragmentOne onCreate
-
FragmentOne onCreateView
-
activitycreated上的FragmentOne
-
FragmentOne启动
-
FragmentOne-onResume
-
FragmentOne onPause
-
FragmentOne onSaveInstanceState
-
FragmentOne在顶部
-
FragmentOne onDestroy
-
FragmentOne onDetach
-
main活动onCreate
-
FragmentOne-onAttach
-
FragmentOne onCreate
-
FragmentOne onCreateView
-
activitycreated上的FragmentOne
-
FragmentOne启动
-
FragmentOne-onResume
-
FragmentOne在顶部
-
FragmentOne-onAttach
-
FragmentOne onCreate
-
FragmentOne onCreateView
-
FragmentTwo-onActivityCreated
-
FragmentOne启动
-
FragmentOne-onResume
- 如果路径是
Activity
-FragmentOne
-orientationchange
-orientationchange
-FragmentTwo
-