Android复习之旅--Activity/Service/Fragment 生命周期

来源:互联网 发布:软件服务协会 编辑:程序博客网 时间:2024/05/23 01:22

Activity的生命周期

Activity_Image.png

onCreate(Bundle savedlnstanceState) --> 初始化,仅仅被调用一次onStart()  --> 开始onRestart() --> 重置onResume()  --> 获取焦点onPause() --> 暂停onStop() --> 停止onDestroy() --> 销毁

开始Activity:在这个阶段依次执行3个生命周期的方法

onCreate() –> onStart() –> onResume()

Activity失去焦点:如果Activity失去焦点,会依次执行2个生命周期的方法

onPause() –> onStop()

Activity重新获得焦点:如果Activity重新获得焦点,会依次执行3个生命周期的方法

onRestart() –> onStart() –> onResume()

关闭Activity:当Activity被关闭时会依次执行3个生命周期的方法

onPause() –> onStop() –> onDestroy()

横竖屏切换的生命周期

Activity onDestory() –> onCreate() –> onStart() –> onResume()


Service的生命周期

Service_Image.png

onCreate() --> 初始化,第一次startService时调用onStartCommand() --> 启动onBind() --> 绑定onUnbind() --> 解绑onDestory() --> 销毁

在Service每一次的开启关闭过程中,只有onStartCommand()可被多次调用(通过多次startService()调用),其他onCreate(),onBind(),onUnbind(),onDestory()在一个生命周期中只能被调用一次。

对于startService()服务:

onCreate() –> onStartCommand()
如果context.stopService() –> onDestory()

对于bindService()服务:

onCreate() –> onBind()
如果Activity被销毁 –> onUnbind() –> onDestory()


Fragment的生命周期

Fragment_Image.png

onAttach() --> 当Fragment被加入Activity时调用,可以获得Activity传递的值onCreate() --> 实例化成员变量onCreateView() --> 给当前Fragment绘制UI布局,可以使用线程更新UIonActivityCreated() --> 表示Activity执行onCreate()方法完成时调用onStart() --> 开始onResume() --> 获得焦点onPause() --> 暂停onStop() --> 停止onDestoryView() --> 表示Fragment销毁相关联的UI布局onDestory() --> 销毁Fragment对象onDetach() --> 脱离Activity

一旦Activity进入resumed状态(也就是running状态),你就可以自由地添加和删除Fragment了。因此,只有当Activity在resumed状态时,Fragment的生命周期才能独立的运转,其它时候是依赖于Activity的生命周期变化的。

contrast_Image.png

当一个Fragment被创建时

onAttach() –> onCreate() –> onCreateView() –> onActivityCreated()

当这个Fragment对用户可见时

onStart() –> onResume()

当这个Fragment进入“后台模式”的时候

onPause() –> onStop()

当这个Fragment被销毁(或持有它的Activity被销毁)时

onPause() –> onStop() –> onDestoryView() –> onDestory() –> onDetach()

0 0
原创粉丝点击