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>