转载至:http://blog.csdn.net/a910626/article/details/45459589
activity的四种状态
运行状态:可和用户交互
暂停状态:部分被覆盖
停止状态:全部被覆盖
销毁状态:该activity结合苏,或activity所在的dalvik进程被结束
涉及的函数:
onCreate
onStart
onRestart
onStart
onPause
onStop
onDestory
运行状态分析:
一个 Activity从被创建到被销毁的过程执行了哪些方法:
-
一个Activity正常的显示出来:执行了 - onCreate(),onStart(),onResume()方法,执行完onResume方法后,一个activity就可以正常显示出来了。
-
退出一个Activity:执行了onPause(),onStop(),onDestroy()
停止状态分析:
以MainActivity被OtherActivity完全覆盖住为例,也就是从mainactivity启动了OtherActivity:
-
从MainActivity转到OtherActivity:MainActivity先执行onPause(),然后OtherActivity执行onCreate(),onStart(),onResume()显示出来,然后MainActivity执行onStop(),进入了停止状态。
-
按back键从OtherActivity回到MainActivity:OtherActivity先执行onPause(),然后MainActivity执行onRestart(),onStart(),onResume(),mainactivity显示出来。然后OtherActivity执行onStop(),onDestroy()。
暂停状态分析:
MainActivity部分被OtherActivity覆盖住
- 从MainActivity转到OtherActivity:MainActivity先执行onPause(),然后OtherActivity执行 onCreate(),onStart(),onResume(),MainActivity进入了暂停状态。
- 从OtherActivity回到MainActivity:OtherActivity先执行onPause(),然后MainActivity执行onResume(),然后OtherActivity执行onStop(),onDestroy()方法。
HOME键的执行顺序:onPause->onStop->onRestart->onStart->onResume
BACK键的顺序: onPause->onStop->onDestroy->onCreate->onStart->onResume
onPause不要做太耗时的工作
上下文菜单,dialog等不会对activity的生命周期造成影响。因为他们是activity产生出来的。
启动和退出Dialog时,Activity的状态始终未变,可见,Dialog实际上属于Acitivity内部的界面,不会影响Acitivty的生命周期。
此外,对于不同的启动模式或Intent Flags或操作行为(如横竖屏切换)等有可能会影响到Activity生命周期
综述:
如果我们熟练的掌握了,activity的生命周期,就可以选择性的覆盖指定的方法,这样可以优化我们的程序内存~
更多了解:
Android总结篇系列:Activity Intent Flags及Task相关属性
http://www.cnblogs.com/lwbqqyumidi/p/3775479.html
Android总结篇系列:Activity启动模式(lauchMode)
http://www.cnblogs.com/lwbqqyumidi/p/3771542.html
Android总结篇系列:Activity生命周期
http://www.cnblogs.com/lwbqqyumidi/p/3769113.html
Activity的生命周期,BACK键和HOME键生命周期
http://www.cnblogs.com/zyw-205520/p/3313268.html