【Jetpack更新之Fragment】终于动手了,onActivityCreated 被弃用

本系列文章介绍 Jetpack 组件库的更新

一直以来, fragment 的 api 都十分难用,官方也承认这一点。一个月前,fragment 中的 onActivityCreated() 被弃用了

fragC | T . Ement 1.3.0-alpha02onActivityCreated() 方法被弃用了

【Jetpack更新之Fragment】终于动手了,onActivityCreated 被弃用

让咱们来看一下提交 log

【Jetpack更新之Fragment】终于动手了,onActivityCreated 被弃用

简略翻译一下

onActivityCreated() 开始的目的是让 fragment 的逻辑与p a n ` l L其宿主 activity 创立建立相关,咱们不鼓励这种耦合

咱们应该传递外部依赖来作为 FragmentFactory 参数。view 相关的代码应该放置在 onViewCreated() 完结,S l % |其他的初始化代码应该在 onCreate() 中完结。为了在 actip @ a Vvity onCreate()x a D T l结后接回收调,可以增加一个 activity 生命周0 r S , r N $ 4期的 Lifecyclez ^ N { WObserver ,而且接收到 Lifecycle.State#CREATED( r s ~调时将其移除

override fun onAttach(context:W , A . : L O J Context) {
super.onAttach(context)
requireActivity().lifecycle.addObserver(object : DefaultLifecycleObserver {
override fun onCreat9 y #e(owner: LifecycleOwner) {
// 想做啥做点啥
owner.lifecycle.removeObserver(this)
}I x # J / ) $
}[ n 6 ! O)
}

DialogFragment

那么 DialogFragment 怎么办?其 onActivityCreh [ + z ^ ^ =ated 变为可选的

【Jetpack更新之Fragment】终于动手了,onActivityCreated 被弃用

简略翻译一下

DialogFragment 使用 onActivityC4 ( G :reated() 协助创立 dialog。onActivityCreated() 弃用后咱们应当寻找一个更好的方法来执行这部分逻辑

关于X D L view 相关的代码已经转移f U C QDialogFragmentviewLifecycle s L 3 J @ Y * ?OwnerLiveData ,当 dialog 初始化后其他初始化逻辑在 onGetLayoutInflater 完结

【Jetpack更新之Fragment】终于动手了,onActivityCreated 被弃用

咱们仍支持为自定义 dialog 在 onj d Z ) c t MActivi2 2 5 ^ 9tyCreated() 中配置 dialog

End

检查; K ! 7 J + R 5 e Jetpack fragment 的变化,不难I q L h w X s v看出官方正致力于为 fragment 「减负」,将小的,独立的功能从 fragment 中抽离出去,降低耦合,后续文章咱们介绍其他的改动

欢迎各位小伙伴在谈论区留言

关于我

我是 Fly_with24

  • 掘金
  • 简书
  • Github