(转)Android Activity生命周期
两分钟彻底让你明白Android Activity生命周期(图文)!
http://blog.csdn.net/android_tutor/article/details/5772285
基础总结篇之一:Activity生命周期
http://blog.csdn.net/liuhe688/article/details/6733407 注:个人感觉这篇文章最为详细
Activity生命周期图
1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
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。
Activity的生命周期之Stopping(停止) 和 Restarting(重启)
http://www.jcodecraeer.com/a/anzhuokaifa/developer/2013/0715/1440.html
下面的内容来自:http://www.jcodecraeer.com/a/anzhuokaifa/developer/2013/0715/1440.html
停止(stopping)和重启(restarting)是activity生命周期中很重要的过程,只有恰当的处理停止和重启过程才能让用户认为你的app始终是连贯的运行着的,在这两个过程之间 用户并不会觉得自己的操作被中断过。以下是stopping和restarting这两个过程发生的典型场景:
-
用户打开最近使用的app窗口(4.0以上版本点击三个虚拟键的第三个键),从当前的app切换到其他app,那么切换之前的原本获得焦点的app 就被stop了。如果用户再次从launcher中点击原来的app图标或者从最近使用的app窗口窗口中回到你的activity,那么原来的activity就重启(restarts)了。
-
用户在在一个activity中调用第二个activity,那么第一个activity就处于stop状态,第二个activity被创建。如果这时用户点击back 那么第一个activity就再次重启(restarted)。
-
用户在使用app的过程中接到电话。
译者注:停止(stopping)和重启(restarting)的翻译似乎会引起误解,这里的重启并不是退出程序,而是指重新调用。但是根据字面上来看,确实是重启的意思。
Activity提供了两个生命周期函数onStop()和onRestart()来处理停止和启动这两个过程。 不同于pause状态的activity,stopped强调这个activity是完全不可见的,用户的焦点转移到了独立的另一个activity之上,而pause状态中 activity只是部分不可见,被暂停了,暂停他的视图很可能还是依附于这个activity之上。
注:因为系统在activity stopped的时候内存中还保持这activity的实例,所以对于简单的程序而言,你即使不实现onStop()
和onRestart()
方法,对于比较简单的activity来说 ,停止和重启这两个过程都会顺利的执行,且程序不会出现什么错误。你只需注意在onStop的时候释放掉暂时不用的资源就ok了。
图 1.当用户离开activity的时候,系统调用onStop()
来停止这个activity (1). 如果用户在这期间回到activity,系统调用onRestart()
方法 (2), 然后马上调用onStart()
(3) 接着调用onResume()
(4). 注意到不管是何种情况导致activity处于stop状态,系统都会在onStop()之前调用onPause()
。
Stop 你的 Activity
当activity收到系统对onStop()方法的调用,activity将不可见,并且你应该释放掉用户在此时不需要的所有资源。 如果有必要恢复内存,系统可能会销毁(通过onDestroy()方法)处于stop状态的activity,更极端的情况是,系统不调用你activity的 onDestroy(),直接杀死你的app进程,因此在onStop()中释放可能导致内存泄漏的资源是非常重要的。(自己主动清理要比系统扫荡式的清理安全得多)。