对Android中Activity的生命周期做个记录。
先看Activity的生命周期流程图:
1、A启动B,再点返回键返回A,生命周期回调
A启动B:
(A)onPause → (B)onCreate → (B)onStart → (B)onResume → (A)onStop
在B点击返回键返回到A:
(B)onPause → (A)onRestart → (A)onStart → (A)onResume → (B)onStop → (B)onDestroy
2、A启动透明Activity C,再点返回键返回A,生命周期回调
A启动透明C:
(A)onPause → (C)onCreate → (C)onStart → (C)onResume
在C点击返回键返回到A:
(C)onPause → (A)onResume → (C)onStop → (C)onDestroy
3、当横竖屏切换时的生命周期
当切换到横屏时,A+表示新的activity实例:
(A)onPause → (A)onStop → (A)onDestory → (A+)onCreate → (A+)onStart → (A+)onResume
当切换回竖屏时:
(A)onPause → (A)onStop → (A)onDestory → (A+)onCreate → (A+)onStart → (A+)onResume
疑问:网上有blog写切回竖屏时会执行两遍生命周期方法,是由于Android版本不同?待确认
4、 点击home/点击最近任务的生命周期
点击home/最近任务:
(A)onPause → (A)onStop
返回到A界面:
(A)onRestart → (A)onStart → (A)onResume
5、各个生命周期的理解
onCreate:这是Activity生命周期的第一个方法,此时Activity在后台,还不可见
onStart:此时Activity已经可见,但是还没有到前台,不能进行交互操作
onResume: 此时Activity出现在前台并可见,此时可以进行独占的操作(比如打开相机)
onPause:此时Activity仍然在前台并可见,可以进行一些轻量级的释放操作,android中指定如果onPause在500ms即0.5秒内没有执行完毕的话就会强制关闭Activity
onStop:此时Activity已经不可见,但是Activity对象还在内存中,没有被销毁
onDestory:此阶段Activity对象即将销毁,不可见,可以进行一些资源释放操作
onRestart:当Activity重新恢复可见时的回调,比如从其他Activity返回或者按Home键后回到应用,一般用不到这个回调
综上,onCreate、onDestory表示Activity的创建和销毁,onStart、onStop表示Activity的可见和不可见,onResume、onPause表示Activity是否可进行交互和编辑
参考资料:
文档信息
- 本文作者:itlgl
- 本文链接:https://itlgl.com/note/2021/04/22/issues-49/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)