Android 我应该在使用viewModel时添加binding.lifecycleOwner=这个吗?

Android 我应该在使用viewModel时添加binding.lifecycleOwner=这个吗?,android,android-jetpack,Android,Android Jetpack,在我看来,我应该在使用viewModel时添加binding.lifecycleOwner=这个 我发现很多项目,比如代码A没有添加绑定。lifecycleOwner=这是为什么 代码A来自项目 代码A binding.lifecycleOwner用于通过数据绑定观察LiveData。 android的种类:text=@{viewModel.text},其中val text:LiveData。视图将在运行时观察文本更改。binding.lifecycleOwner用于通过数据绑定观察LiveDa

在我看来,我应该在使用viewModel时添加binding.lifecycleOwner=这个

我发现很多项目,比如代码A没有添加绑定。lifecycleOwner=这是为什么

代码A来自项目

代码A

binding.lifecycleOwner用于通过数据绑定观察LiveData。 android的种类:text=@{viewModel.text},其中val text:LiveData。视图将在运行时观察文本更改。

binding.lifecycleOwner用于通过数据绑定观察LiveData。
android的种类:text=@{viewModel.text},其中val text:LiveData。View将在运行时观察文本更改。

据我所知

binding.lifecycleOwner=此


一方面用于订阅,以便在liveData更改时接收消息,从而使视图中的信息保持一致;另一方面用于在视图和片段被破坏时从列表中删除观察者,以防止内存泄漏。Fragment的viewLifecycleOwner更适合作为lifecycleOwner以这种方式进行绑定,不是吗?

据我所知

binding.lifecycleOwner=此

一方面用于订阅,以便在liveData更改时接收消息,从而使视图中的信息保持一致;另一方面用于在视图和片段被破坏时从列表中删除观察者,以防止内存泄漏。Fragment的viewLifecycleOwner更适合作为lifecycleOwner以这种方式进行绑定,不是吗?

请注意!您应该使用viewLifecycleOwner来代替此。binding.lifecycleOwner=viewLifecycleOwner,因为片段视图的生命周期小于片段请注意!您应该使用viewLifecycleOwner来代替此。binding.lifecycleOwner=viewLifecycleOwner,因为片段的视图的生命周期比片段小
class AddToyFragment : androidx.fragment.app.Fragment() {

    private lateinit var binding: AddToyBinding
    ...

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        binding = DataBindingUtil.inflate(
            inflater, R.layout.fragment_add_toy, container, false
        )

        setHasOptionsMenu(true)

        return binding.root
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        (requireActivity() as AppCompatActivity).supportActionBar?.setDisplayHomeAsUpEnabled(true)

        //If there is no id specified in the arguments, then it should be a new toy
        val chosenToy : ToyEntry? = arguments?.getParcelable(CHOSEN_TOY)

        //Get the view model instance and pass it to the binding implementation
        val factory = AddToyViewModelFactory(provideRepository(requireContext()), chosenToy)
        mViewModel = ViewModelProviders.of(this, factory).get(AddToyViewModel::class.java)

        binding.viewModel = mViewModel

        binding.fab.setOnClickListener {
            saveToy()
        }

        binding.lifecycleOwner=this //I think it should add 
    }