Activity 生命周期¶
更新日期 2021-9-1
- 2021-9-1 修改格式
- 2020-8-20 创建文档
前面我们看了Activity的综述。本文我们来看它的生命周期。
Android官方文档介绍的很详细。 这里我们打一些log仔细观察一下生命周期的变化。
生命周期图示
生命周期变化¶
执行一些常见的操作,打log看一下生命周期的变化。测试机型:RedMi。
启动然后退出¶
启动然后退出
启动后按home键¶
启动后按home键
Act1: onCreate
Act1: onStart
Act1: onResume
Act1: onWindowFocusChanged: hasFocus: true
// 按home键
Act1: onWindowFocusChanged: hasFocus: false
Act1: onPause
Act1: onStop
// 再回来
Act1: onRestart
Act1: onStart
Act1: onResume
Act1: onWindowFocusChanged: hasFocus: true
// 按返回键退出act
Act1: onWindowFocusChanged: hasFocus: false
Act1: onPause
Act1: onStop
Act1: onDestroy
旋转手机¶
旋转手机
activity在切换横竖屏的时候的生命周期。
[Life]: onCreate
[Life]: onStart
[Life]: onResume
[Life]: onWindowFocusChanged: hasFocus: true
// 横屏
[Life]: onPause
[Life]: onStop
[Life]: onDestroy
[Life]: onCreate
[Life]: onStart
[Life]: onResume
[Life]: onWindowFocusChanged: hasFocus: true
// 竖屏
[Life]: onPause
[Life]: onStop
[Life]: onDestroy
[Life]: onCreate
[Life]: onStart
[Life]: onResume
[Life]: onWindowFocusChanged: hasFocus: true
// 返回
[Life]: onWindowFocusChanged: hasFocus: false
[Life]: onPause
[Life]: onStop
[Life]: onDestroy
来回切换¶
来回切换的生命周期变化
以2个Activity启动为例。
Act1: onCreate
Act1: onStart
Act1: onResume
Act1: onWindowFocusChanged: hasFocus: true
Act1: onPause
Act1: onWindowFocusChanged: hasFocus: false
Act2: onCreate
Act2: onStart
Act2: onResume
Act2: onWindowFocusChanged: hasFocus: true
Act1: onStop
Act2: onWindowFocusChanged: hasFocus: false
Act2: onPause
Act1: onRestart
Act1: onStart
Act1: onResume
Act1: onWindowFocusChanged: hasFocus: true
Act2: onStop
Act2: onDestroy
Act1: onWindowFocusChanged: hasFocus: false
Act1: onPause
Act1: onStop
Act1: onDestroy
弹出AlertDialog¶
recreate¶
调用 recreate() 方法
[Life]: onCreate
[Life]: onStart
[Life]: onResume
[Life]: onWindowFocusChanged: hasFocus: true
[Life]: click [recreate]
[Life]: onPause
[Life]: onStop
[Life]: onDestroy
[Life]: onCreate
[Life]: onStart
[Life]: onResume
recreate()
方法后并没有走onWindowFocusChanged
回调。
onCreate和onStart的区别¶
activity的状态区别
onCreate
在系统首次创建 Activity 时触发。Activity会在创建后进入已创建状态。- 当 Activity 进入“已开始”状态时,系统会调用此回调。
onStart()
调用使 Activity 对用户可见,因为应用会为 Activity 进入前台并支持交互做准备。
onStart()
方法会非常快速地完成,并且与“已创建”状态一样,Activity 不会一直处于“已开始”状态。一旦此回调结束,Activity 便会进入已恢复状态,系统将调用 onResume()
方法。
onPause和onStop的区别¶
onPause()
执行非常简单,而且不一定要有足够的时间来执行保存操作。
因此,您不应使用 onPause()
来保存应用或用户数据、进行网络调用,或执行数据库事务。因为在该方法完成之前,此类工作可能无法完成。
已进入已停止状态,因此系统将调用 onStop()
回调。举例而言,如果新启动的 Activity 覆盖整个屏幕,就可能会发生这种情况。
在 onStop()
方法中,应用应释放或调整应用对用户不可见时的无用资源。例如,应用可以暂停动画效果,或从细粒度位置更新切换到粗粒度位置更新。
使用 onStop()
而非 onPause()
可确保与界面相关的工作继续进行,即使用户在多窗口模式下查看您的 Activity 也能如此。
您还应该使用 onStop()
执行 CPU 相对密集的关闭操作。
本站说明
一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~