-
onCreate:创建Activity,主要作用是做Activity的初始化工作,该阶段Activity不可见。在onCreate生命周期需要setContentView初始化布局,同时必须调用super.onCreate(savedInstanceState)。
-
onStart:启动Activity,可见但是没有焦点,不能与用户交互,可做一些动画初始化操作,不建议放耗时操作。该生命周期在每次onRestart时都会被重新调用,如果有些后台暂停后又被重新恢复的初始化操作可以放在该生命周期,如View的handler重新初始化。
-
onResume:Activity处于运行态,对用户可见,也可与用户交互。
-
onPause:Activity暂停态,部分场景对用户可见(上面有dialog弹出时),但是已失去焦点。用户短暂离开页面,如点击home键后会进入onPause生命周期。在该生命周期可以保存一些临时值,方便再次onResume时使用。
-
onRestart:Activity重启,如果Activity没有被销毁,需要再次使用时不会重新create,而是通过onStart重新启动。该生命周期可增加一些判断给后续onStart或者onResume的生命周期里确定此activity是首次启动还是进入后台恢复的。这样可以避免一些重量级资源重复初始化。
-
onDestroy:Activity销毁,释放资源,置空handler
Activity生命状态转移实例
1. 从A页面Activity跳转到B页面Activity,然后关闭B页面Activity,回到A页面Activity,两个页面的生命周期变化情况。
A跳B:
(1) A页面:onPause
(2) B页面:onCreate => onStart => onResume()
(3) A页面:onStop
B页面关闭:
(1) B页面:onPause
(2) A页面:onRestart => onStart => onResume
(3) B页面:onStop => onDestroy
2. 按Home键切换到桌面后又回到A页面该Activity
onPause => onStop => onRestart => onStart => onResume
3. 横竖屏切换
(1) 没有配置configChanges的情况,Activity会被销毁重建。onPause => onSaveInstanceState => onStop => onDestroy => onCreate =>onStart => onRestoreInstanceState => onResume
注:切横屏时生命周期走一次,横屏切竖屏时生命周期走两次
(2)配置了configChanges后,横竖屏切换,Activity不再销毁,会直接走onConfigurationChanged回调。