标签:
Activity的生命周期:
(1)启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
(2)当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
Activity -> onFreeze() -> onPause()
(3)当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
(4)当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
Activity -> onFreeze() -> onPause() -> onStop() -> Maybe -> onDestroy()
(5)用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
(6)当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
(7)用户退出当前Activity(即调用finish()):系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
Activity -> onPause() -> onStop() -> onDestroy()
注意:当前Activity弹出的dialog则不会执行Activity任何生命周期中的方法,只有其它Activity弹出了Dialog或者拦住了当前的Activity才会执行onPause()
当电话来电时:
Activity -> onPause(), 如果onPause()的时候,用户打开了一个“联系人”,做了操作,此时Activity 不可见, Activity -> onStop(),由于Activity和其所在的进程和Task并没有被销毁,Activity的onRestart 和onStart事件被执行,接着Activity的onResume事件被执行,Activity又被呈现给了用户。
用户这次使用完后,按Back键返回到桌面,A的 onPause, onStop被执行,随后A的onDestroy被执行,由于当前Task中已经没有任何Activity,A所在的Process的重要程度被降到很低,很快A所在的Process被系统结束。
Fragment:( Fragment就相当于一个有生命周期的View,它的生命周期被所在的Activity的生命周期管理 )
切换到该Fragment:onAttach() -> onCreate() -> onCreateView() -> onActivityCreated() -> onStart() -> onResume()
屏幕灭掉或者回到桌面(Home): onPause() -> onSaveInstanceState() -> onStop()
屏幕解锁或者重新回到应用: onStart() -> onResume()
切换到其他Fragment: onPause() -> onStop() -> onDestroyView()
切换回本身的Fragment: onCreateView() -> onActivityCreated() -> onStart() -> onResume()
退出应用:onPause() -> onStop() -> onDestroyView() -> onDestroy() -> onDetach()
Android Acitivity 与 Fragment 声明周期
标签:
原文地址:http://www.cnblogs.com/CharlesGrant/p/4845272.html