gpt4 book ai didi

多次调用 Android LiveData observe

转载 作者:行者123 更新时间:2023-11-29 16:30:28 31 4
gpt4 key购买 nike

我有一个 BaseActivity,它有一个 MutableLiveData 字段,如下所示

val refInfoLiveData: MutableLiveData<RefInfo?> by lazy { MutableLiveData<RefInfo?>() }

BaseActivityonStart 方法被调用时,将进行网络调用以填充此 MutableLiveData 字段。

我还有几个 Fragment,它们是继承 BaseActivityActivity 的一部分。

在这些 fragment 中,我在 fragment 的 onResume 方法中进行另一个调用,如下所示

    (activity as BaseActivity).refInfoLiveData.observe(this, Observer {
it?.let { refInfo ->
adapter?.setRefInfo(refInfo)
}
})

当第一次创建 fragment 时,observe 只被调用一次,但 fragment 进入后台然后返回,它被调用多次,这会导致问题。

这个问题可能是什么原因,我该如何解决?

如有任何帮助,我们将不胜感激。

最佳答案

那是因为你应该在 onViewCreated 中使用 observe(viewLifecycleOwner, Observer { ...

import androidx.lifecycle.observe

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

(activity as BaseActivity).refInfoLiveData.observe(viewLifecycleOwner) { refInfo ->
refInfo?.let { adapter.setRefInfo(it) }
}
}

目前,如果您将应用置于后台然后无限次将其置于前台,您将拥有无限数量的订阅者。

关于多次调用 Android LiveData observe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56480597/

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