Activity生命周期详细图解
onCreate() | 这是活动第一次被创建,活动的初始化操作 |
---|---|
onState() | 活动由不可见到了可见的状态,即便无法与用户直接交互 |
onResume() | 活动一定处于栈顶,活动的视图一定是可见的,用户可可以直接交互 |
onPause() | 活动的视图不在最上方,但是依旧存在,但依然可见,比如弹窗、锁屏 |
onStop() | 活动完全不可见,但是活动依旧存在于后台 |
onDestory() | 调用后活动销毁,活动终止。 |
onRestart() | 活动被重新启动,必须调用在活动被销毁前,和活动不处于栈顶的时候 |
Fragment 的生命周期图解:
onAttach() | 将碎片和活动建立关联 |
---|---|
onCreate() | 创建碎片的视图,只会调用一次 |
onCreateView() | 为碎片绘制视图时候调用,会将显示的视图返回 |
onActivityCreate() | 确保于碎片相关的活动已经创建完毕的时候调用 |
onStart() | 启动碎片的时候调用 |
onResume() | 这时候用户是可以和碎片交互的 |
onPuse() | 暂停碎片,用户无法与碎片直接交互 |
onStop() | 停止碎片,碎片对于用户而言已经不可见了 |
onDestoryView() | 销毁碎片的相关视图 |
onDestory() | 销毁碎片 |
onDetach() | 解除于活动的关联 |
在同一个活动中,当一个fragment被另一个fragment替代的时候:
首先暂停然后停止当前的fragment,然后开始为新的fragment和activity建立联系,创建fragment、绘制fragment视图,在新的fragment已经在当前视图可见,然后启动的时候,我们才会销毁旧的fragfment 的视图,虽然销毁了旧视图,但是旧的fragmnet没有被销毁、也没有和activity解除关联。当旧视图被销毁后,新视图才处于栈顶,也就是我们可见的情况。
onPause: 7暂停fragment时候回调
onStop: 8停止fragment时候回调
onAttach: 1将fragment和activity建立联系时候调用
onCreate: 2创建fragment时候回调,会被调用一次
onCreateView: 3为fragment绘制视图时候调用,会将显示的view返回
onActivityCreated: 4在fragment所依赖的activity启动完成时候调用
onStart: 5fragment启动时候调用,
onDestroyView: 9销毁fragment相关的视图时候调用
onResume: 6恢复fragment时候调用,这时候的fragment可见,onStart方法后面一定回调onResume方法
返回上一个视图
因为之前并没有销毁fragment,所以我们不需要重新创建fragment,我们直接绘制fragment的视图,当fragment启动之后,我们结束原来的新创建的fragment 的生命周期,然后旧fragment处于栈顶,可见。
onPause: 7暂停fragment时候回调
onStop: 8停止fragment时候回调
onCreateView: 3为fragment绘制视图时候调用,会将显示的view返回
onActivityCreated: 4在fragment所依赖的activity启动完成时候调用
onStart: 5fragment启动时候调用,
onDestroyView: 9销毁fragment相关的视图时候调用
onDestroy: 10fragment被销毁时候调用
onDetach: 11解除和activity的关联
onResume: 6恢复fragment时候调用,这时候的fragment可见,onStart方法后面一定回调onResume方法
由一个活动进入另一个活动,当前fragment的状态:
活动和碎片都进入了onStop状态,而且碎片的状态变化优先于activity。
D/ BlankFragment03: onPause: 7暂停fragment时候回调
D/MainActivity: onPause: 活动不在最上面时候调用
D/ BlankFragment03: onStop: 8停止fragment时候回调
D/MainActivity: onStop: 活动完全不可见时候调用