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

本文探讨了Jetpack组件库中Fragment的最新更新,特别是onActivityCreated方法被弃用的原因和应对策略。官方建议通过传递外部依赖并在onViewCreated中处理视图相关代码,或使用DialogFragment的构造函数进行dialog配置,以降低Fragment与Activity的耦合。作者还预告了后续将介绍更多Fragment的改动。
部署运行你感兴趣的模型镜像

本系列文章介绍 Jetpack 组件库的更新
一直以来, fragment 的 api 都非常难用,官方也承认这一点。一个月前,fragment 中的 onActivityCreated() 被弃用了

Fragment

fragment 1.3.0-alpha02onActivityCreated() 方法被弃用了

让我们来看一下提交 log

简单翻译一下

onActivityCreated() 最初的目的是让 fragment 的逻辑与其宿主 activity 创建建立关联,我们不鼓励这种耦合

我们应该传递外部依赖来作为 FragmentFactory 参数。view 相关的代码应该放置在 onViewCreated() 完成,其他的初始化代码应该在 onCreate() 中完成。为了在 activity onCreate() 完成后接收回调,可以添加一个 activity 生命周期的 LifecycleObserver ,并且接收到 Lifecycle.State#CREATED 回调时将其移除

override fun onAttach(context: Context) {
    super.onAttach(context)
    requireActivity().lifecycle.addObserver(object : DefaultLifecycleObserver {
        override fun onCreate(owner: LifecycleOwner) {
            // 想做啥做点啥
            owner.lifecycle.removeObserver(this)
        }
    })
}

DialogFragment

那么 DialogFragment 怎么办?其 onActivityCreated 变为可选的

简单翻译一下

DialogFragment 使用 onActivityCreated() 帮助创建 dialog。onActivityCreated() 弃用后我们应当寻找一个更好的方式来执行这部分逻辑

关于 view 相关的代码已经转移至 DialogFragment

viewLifecycleOwnerLiveData ,其他初始化逻辑可以放在 onGetLayoutInflater

我们仍支持为自定义 dialog 在 onActivityCreated() 中配置 dialog

End

查看 Jetpack fragment 的变动,不难看出官方正致力于为 fragment 「减负」,将小的,独立的功能从 fragment 中抽离出去,降低耦合,后续文章我们介绍其他的改动

关于各位小伙伴在评论区留言

关于我

我是 Fly_with24

  • 掘金

  • 简书

  • Github

欢迎关注我的公众号

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值