gpt4 book ai didi

android - 在数据绑定(bind)上调用 setLifecycleOwner 时,我应该传递从 getViewLifecycleOwner 返回的 Fragment 实例还是所有者

转载 作者:行者123 更新时间:2023-12-04 11:02:14 31 4
gpt4 key购买 nike

哪种方法是正确的:

  1. Fragment 实例作为 lifecycleOwner 传递:

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
    val binding = FragmentEventSettingsBinding.inflate(inflater, container, false)
    binding.lifecycleOwner = this
    return binding.root
    }
  2. 传递 fragment viewLifecycleOwner:

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
    val binding = FragmentEventSettingsBinding.inflate(inflater, container, false)
    binding.lifecycleOwner = viewLifecycleOwner
    return binding.root
    }

最佳答案

推荐的解决方案是通过支持库 28.0.0 和 AndroidX 1.0.0 中添加的 getViewLifecycleOwner() 或 getViewLifecycleOwnerLiveData() 使用 fragment 的 View 生命周期,这样每次 fragment 的 View 被销毁时 LiveData 都会删除观察者

引用:5 common mistakes when using Architecture Components

关于android - 在数据绑定(bind)上调用 setLifecycleOwner 时,我应该传递从 getViewLifecycleOwner 返回的 Fragment 实例还是所有者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58732672/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com