Android之旅--Activity/Service/Fragment 生命周期
KeenanLyman
8年前
<h3><strong>Activity的生命周期</strong></h3> <p style="text-align: center;"><img src="https://simg.open-open.com/show/f2bc8b95feacc99117f1ff294681bfdd.png"></p> <p style="text-align: center;">Activity_Image.png</p> <pre> onCreate(Bundle savedlnstanceState) --> 初始化,仅仅被调用一次 onStart() --> 开始 onRestart() --> 重置 onResume() --> 获取焦点 onPause() --> 暂停 onStop() --> 停止 onDestroy() --> 销毁</pre> <p>开始Activity:在这个阶段依次执行3个生命周期的方法</p> <p>onCreate() --> onStart() --> onResume()</p> <p>Activity失去焦点:如果Activity失去焦点,会依次执行2个生命周期的方法</p> <p>onPause() --> onStop()</p> <p>Activity重新获得焦点:如果Activity重新获得焦点,会依次执行3个生命周期的方法</p> <p>onRestart() --> onStart() --> onResume()</p> <p>关闭Activity:当Activity被关闭时会依次执行3个生命周期的方法</p> <p>onPause() --> onStop() --> onDestroy()</p> <p><strong>横竖屏切换的生命周期</strong></p> <p>Activity onDestory() --> onCreate() --> onStart() --> onResume()</p> <h3><strong>Service的生命周期</strong></h3> <p style="text-align: center;"><img src="https://simg.open-open.com/show/efcc23483a8b7c3f57e186f4c9784b7a.png"></p> <p style="text-align: center;">Service_Image.png</p> <pre> onCreate() --> 初始化,第一次startService时调用 onStartCommand() --> 启动 onBind() --> 绑定 onUnbind() --> 解绑 onDestory() --> 销毁</pre> <p>在Service每一次的开启关闭过程中,只有onStartCommand()可被多次调用(通过多次startService()调用),其他onCreate(),onBind(),onUnbind(),onDestory()在一个生命周期中只能被调用一次。</p> <p>对于startService()服务:</p> <p>onCreate() --> onStartCommand()</p> <p>如果context.stopService() --> onDestory()</p> <p>对于bindService()服务:</p> <p>onCreate() --> onBind()</p> <p>如果Activity被销毁 --> onUnbind() --> onDestory()</p> <h3>Fragment的生命周期</h3> <p style="text-align: center;"><img src="https://simg.open-open.com/show/487e2f539369a037e9ce4551b5f90409.png"></p> <p style="text-align: center;">Fragment_Image.png</p> <pre> onAttach() --> 当Fragment被加入Activity时调用,可以获得Activity传递的值 onCreate() --> 实例化成员变量 onCreateView() --> 给当前Fragment绘制UI布局,可以使用线程更新UI onActivityCreated() --> 表示Activity执行onCreate()方法完成时调用 onStart() --> 开始 onResume() --> 获得焦点 onPause() --> 暂停 onStop() --> 停止 onDestoryView() --> 表示Fragment销毁相关联的UI布局 onDestory() --> 销毁Fragment对象 onDetach() --> 脱离Activity</pre> <p>一旦Activity进入resumed状态(也就是running状态),你就可以自由地添加和删除Fragment了。因此,只有当Activity在resumed状态时,Fragment的生命周期才能独立的运转,其它时候是依赖于Activity的生命周期变化的。</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/da2907eb8f760573e5bb7bb09396b11f.png"></p> <p style="text-align: center;">contrast_Image.png</p> <p>当一个Fragment被创建时</p> <p>onAttach() --> onCreate() --> onCreateView() --> onActivityCreated()</p> <p>当这个Fragment对用户可见时</p> <p>onStart() --> onResume()</p> <p>当这个Fragment进入“后台模式”的时候</p> <p>onPause() --> onStop()</p> <p>当这个Fragment被销毁(或持有它的Activity被销毁)时</p> <p>onPause() --> onStop() --> onDestoryView() --> onDestory() --> onDetach()</p> <p> </p> <p>来自:http://www.jianshu.com/p/3cf90687c3c7</p> <p> </p>