分析activiyt的生命周期需要从两个方面去学习:1.一般情况下的生命周期,2异常情况下的生命周期。
1.一般情况下的生命周期:即正常操作下的生命周期:
onCreate: activity正在被创建,可做初始化操作
onRestart :activity正在重新启动
onStart:activity正在被启动,可见,但是还没有出现在前台不可以交互
onResume:activity已经可见并显示到前台可以操作
onPause:activity正在被停止,正常情况下下面会调用onStop,但是如果此时快速的回到当前activity,会直接走到onResume,这种情况一般很难复现,但是如果能复现,可在onPasue中执行
数据存储,停止动画等不大耗时的操作,耗时太长会影响新activity的显示
onStop:activity即将被停止,可做轻量级的回收工作
onDestroy:activity即将被销毁,可做回收和资源释放等工作
(1)如果是生成特定的activity,onCreate->onStart->onResume
(2)如果从activity执行跳转或者回到桌面 onPause->onStop) 如果新activiyt是透明主题,那么当前activity不会执行onStop
(3)当再次回到原activity时,onRestart ->onStart->onResume
(4)当用户按Back键时 ,onPause->onStop->onDestory
(5)当activity被系统回收后,再次打开,方法执行顺序和(1)一样,但是过程 不一定一样。
二.异常情况下的生命周期
1.资源配置发生改变,例如横竖屏切换:activity销毁并重建
onPause->onSaveInstance->onStop->onDestory
onCraeate->onstart->onRestoreInstanceState->.....
2资源不足导致优先级比较低的activity被杀死
优先级按照高地分为,前台activity优先级最高,可见但非前台的activity其次,最低的是后台activity,根据内存系统会按照优先级高低销毁activity,通过onsaveInstance和onRestoreInstancel来恢复数据
我们可以设置activity的configChanges属性达到横竖屏切换时不去销毁重建的目的 configchanges = "orientation|sceensize",当然还有其他配置方法,keyboradhidden等等,这样,当我们横竖屏切换时
就不会去销毁重建,而是被activity的OnConfigchanges捕捉到了。
至此,activiyt生命周期暂时高一段落,大都是对android开发艺术一书的学习和摘抄。