Activity的生命周期
(一)activity 主要有三个状态:
1、你完全看见它(即当前屏幕) 。 当在屏幕前台时(位于当前任务堆栈的顶部),它是活跃或运行的状态。它就是相应用户操作的activity 。
2、它站在第二排,你只能看到它的一部分 。当它失去焦点但仍然对用户可见时,它处于暂停状态。即是:在它之上有另外一个activity 。这个 activity 也许是透明的,或者未能完全遮蔽全屏,所以被暂停的 activity 仍对用户可见。 暂停的activity 仍然是存活状态 (它保留着所有的状态和成员信息并连接至窗口管理器),但当系统处于极低内存的情况下,仍然可以杀死这 个activity 。
3、你完全看不见它 。 如果它完全被另一个activity 覆盖是,它处于 停止状态。它仍然保留所有的状态和成员信息。然而它不在为用户可见,所以它的窗口将被隐藏,如果其它地方需要内存,则系统经常会杀死这个activity 。
总之 :如果一个activity 处于暂停或停止状态,系统可以通过要求它结束(调用它的 finish() 方法)或直接杀死它的进程来将它驱出内存。当它再次为用户可见的时候,它只能完全重新启动并恢复至以前的状态。
(二)activity的7个生命周期方法
1、onCreate
2、onStart
3、onResume
4、onPause
5、onStop
6、onRestart
7、onDestroy
(三)生命周期阶段
1、 开始 Activity ——进入第一个状态
这个阶段依次执行了3个生命周期方法——onCreate、onStart和onResume。
2、Activity失去焦点——处于第一个状态,进入第二、三个状态
这个阶段依次执行了2个生命周期方法——onPause、(onPause之后,系统会问:Activity仍然还没有获取焦点么?回答:是)onStop。(回答:否,查看下面内容)
3、关闭Activity——处于第一个状态,被关闭。处于第二、三状态被关闭
处于第一个状态、被关闭:这个阶段依次执行了三个生命周期方法——onPause、onStop、onDestory。
处于第二、三状态被关闭:这个阶段直接执行onDestory
4、重新获取焦点——处于第二、三状态,进入第一状态
这个阶段依次执行了三个生命周期方法——onRestart、onStart和onResume。
———————————————上面是基本4个阶段————————————
——————————————下面是一个变态复杂阶段———————————
1、在上述第2条中(回答:否)
onPause之后运行:onResume方法,进入第一个状态
总结:
1、整体生命周期:onCreate、onStart、onResume、(Activity失去焦点)onPause、(Activity仍然没有获取焦点)onStop、(Acivity没有重新获取焦点)onDestory(或者,其他应用程序占用内容,直接finish掉)
2、焦点生命周期:
onPause之后,Activity重新获取焦点,则进入onResume方法。
onStop之后,Activity重新获取焦点,则onRestart、再onStart。
3、生命周期有两层循环:从onPause回到onResume,从onStop回到onStart
参考资料:
1、Android/OPhone开发完全讲义
2、Android---Activity生命周期状态
http://www.cnblogs.com/sardine/archive/2010/09/26/1835290.html