Activity生命周期理解
2024-09-01 11:55:51
在Android应用程序运行时,Activity的活动状态由Android以Activity栈的形式管理,当前活动的Activity位于栈顶。随着应用程序之间的切换、关闭等,每个Activity都有可能从活动状态转入非活动状态,当然,也可以从非活动状态转入活动状态。
下面,我们借助一个关于Activity生命周期模型图进行理解。
从图中可以看出来,在Activity的生命周期中,会有如下方法会被系统回调:
void onCreate(Bundle savedInstanceState):创建Activity时会被回调。
void onStart():首次创建Activity时在onCreate方法之后执行,但会有另外一种情况,后面会进行分析,总之,就是启动Activity时被回调。
void onRestart():该活动在Activity没有被销毁时会一直存在Activity栈中,重新启动Activity时会被回调。
void onResume():用户在进行Activity切换时,恢复相应的Activity时回调。在void onStart()方法后一定会回调的方法。
void onPause():Activity被暂停时回调,活动会被压倒栈中。
void onStop():Activity被停止时回调。
void onDestroy():Activity被销毁时回调,完全从系统内存中移除。
总结归纳起来,Activity会有四种状态:
- 运行状态:当前Activity位于前台,用户可见,可以获得焦点。
- 暂停状态:其他Activity位于前台,该Activity依然可见,只是不能获得焦点。
- 停止状态:该Activity不可见,失去焦点。
- 销毁状态:该Activity结束,或Activity所在的进程被结束。
我通过程序测试得出Activity的7个方法会在何时进行回调。
- 当前程序入口为该Activity,当程序启动时将会自动启动并执行该Activity,会回调onCreate()、onStart()、onResume()三个方法回调,如图
- 当切换到程序的另外一个Activity时,MainActivity不能再获取焦点,但依然可见,此时该Activity进入“暂停”状态,会回调onPause()方法,如图
- 当返回从另外一个Activity返回到MainActivity时,该Activity会再次进入“运行”状态,会回调onStop()、onRestart()、onStart()、onResume()方法,如图
- 当直接按下home键返回系统桌面时,当前该Activity失去焦点,但并未销毁,只是进入“停止”状态,会回调onPause()、onStop()方法,如图
- 当再次从系统桌面进入程序时,会回调onRestart()、onStart()方法,如图
- 当直接退出程序时,会回调onPause()、onStop()、onDestroy()方法,如图
由以上实验得onCreate和onDestroy该方法在周期中只会被调用一次。
最新文章
- iOS Swift-简单值(The Swift Programming Language)
- VS2010 使用WebService
- mORMot 数据库操作
- ubuntu + subversion + apache2 设置
- JS的prototype的共享机制分析
- .htaccess文件 使用
- 百度前端笔试题目--css 实现一个带尖角的正方形
- (原)torch的apply函数
- [bzoj4240] 有趣的家庭菜园
- Spring Boot 的 10 个核心模块
- C166 -MDH
- bootstrap3文章
- socket粗解
- 「Vue」自定义指令
- TradingView 自定义指标
- Android中利用ant进行多渠道循环批量打包
- 用TTTAttributedLabel创建变化丰富的UILabel
- js迪杰斯特拉算法求最短路径
- Java的Timer定时器
- MySQL 一些让人容易忽视的知识点