Android 生命週期 - Fragment

Fragment lifecycle

tags: Android lifecycle Fragment

doc

fragment lifecycle-callback


小规则,fragment的生命週期,一定会比父层短

create - onAttach

当 fragment 和 activity 关联时呼叫

created - onCreate

将 fragment 添加到 fragmentManager,callback function 传入建构子包含 savedInstanceState,对用户不可见,没有ui
:::info
只有当 fragment 提供了有效的 view 实例,并设置到 fragment且可被 getView 获取,view 的生命週期才会到 initialized
:::

created - onCreateView

执行以拿到 fragment 初始化 ui,可以透过 inflate 或是其他方式建立并回传 view 实例,不应执行耗时操作

created - onActivityCreate

可以和 activity 的 ui 进行互动,在该生命週期之前不行

created - onViewCreate

适合初始化 view 的状态、观察 liveData 或在此设置 recycler 的 adapter, viewPager2

created - onViewStateRestored

为需要从 SaveState 取值,做初始化的类别

started - onStart

强烈建议将继承自 DefaultLifecycleObserver 的类别,在 onStart 做绑定,因为到了 onStart,就保证了 view 是可见的

fragment的生命週期会先到 onStart,view 的才会接着到 onStatrt
:::info
viewPager2预载入仅会到 onStart
:::

resume - onResume

在切换动画完成后,fragment会进入onResume,以跟用户响应

started - onPaused

用户準备离开 fragment,但画面仍可见时,fragment 和 view 会回到 started 阶段,并呼叫 onPaused callback

created - onstoped

已不可见,但这个状态的触发有两种可能

activity, fragment 被停止activity, fragment 状态正要被保存

onStop保证了会在 fragment 状态保存前执行

而 onStop也是fragmentTranscation 最后安全执行的地方

created - ondesotryView

转场动画都结束后,生命週期移动到此,fragment 的 view 会和window 分离,所有 view 的生命週期到尽头,getViewLifecycleOwnerLiveData() 会拿到 null,这样才能让所有view都可以被 gc
而要注意的是,此时尚未和 activity 解除连结

created - onDetach

和 activity 分离

destoryed - onDestory

fragment 被从 stack 移除,或是 fragment manager 被销毁,fragment 生命週期也就到尽头

情境

暂时离开萤幕

home, recent application, 锁屏

onAttach -> onCreate -> onCreateView ->onViewCreate -> onStart ->onResume -> onPause ->onStoponStart ->onResume

configuration change

onPause ->onStop ->onDestoryView ->onDestory -> onDetach ->onAttach -> onCreate -> onCreateView ->onViewCreate -> onStart ->onResume 

离开应用

onPause ->onStop ->onDestoryView ->onDestory -> onDetach 

切换 fragment

onPause ->onStop ->onDestoryView onCreateView ->onViewCreate -> onStart ->onResume 

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章