Activity生命周期详解

来源:互联网 发布:手机捕鱼游戏源码 编辑:程序博客网 时间:2024/06/06 17:57
最近在项目中遇到一个有关生命周期的问题,于是就有温习了一下这个Activity的生命周期,首先呢这个Activity它有7个生命周期分别是

oncreate,onstart,onrestart,onstop,onresume,ondestroy,onpause

onCreate :activity 第一次创建的时候被执行,
onStart :在启动但没有获取焦点之前执行,无法与用户进行交互
onrestart:重启
onResume :在获取到焦点的时候执行,同时可以操作页面
onPause :activity正在失去焦点的时候执行
onStop :失去焦点以后执行
onDestory:页面销毁的时候执行,
比如刚刚创建一个activity,首先会执行onCreate, onStart, onResume,这个时候跳转到其他activity,当前activity首先会执行onPause, onStop,(但是如果另外一个activity采用了透明的主题,当前activity不会回调onStop),其他activity执行onCreate, onStart, onResume,这个时候结束掉其他activity,当前activity会执行onRestart, onStart, onResume
举几个例子吧
1).启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态(onStart在页面没有获取焦点之前执行, onResume在页面获取焦点时执行,一般情况下网络请求放在onResume方法中,这样做到目的是负责在当前页面上的页面结束后,当前页面也快及时更新数据)。
2).当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
3).当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
4).当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
5).用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
6).当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
7).用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
(8)横竖屏切换的时候:比如我们在看视频,现在要从竖屏切换到横屏的时候,要先保存我们现在的状态(如:你看视频看到5分钟,要保存当前看了几分钟、当前缓存的进度等),也就是onSaveInstanceState;接着竖屏的Activity要失去焦点onPause;然后让它停止运行onStop;再销毁它onDestroy;接着再创建横屏的Activity  onCreate;再让它运行onStart;然后要将之前保存了的状态取出来,onRestoreInstanceState;最后让横屏的Activity获得焦点onResume。
我理解的差不多就这样了,肯定是不够全面如果有知道的底下评论补充,我也会偷偷的去学习,哈哈。



原创粉丝点击