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

895 阅读2分钟

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布局,可以使用线程更新UI
onActivityCreated() --> 表示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()