Android LiveData观察被多次调用

Android LiveData观察被多次调用,android,kotlin,android-lifecycle,android-architecture-components,android-livedata,Android,Kotlin,Android Lifecycle,Android Architecture Components,Android Livedata,我有一个BaseActivity,它有一个MutableLiveData字段,如下所示 val refInfoLiveData: MutableLiveData<RefInfo?> by lazy { MutableLiveData<RefInfo?>() } 当第一次创建片段时,只调用一次observe,但是片段进入后台,然后返回,它被调用多次,这导致了问题 这个问题的原因是什么?我该如何解决 任何帮助都将不胜感激。 也许您可以尝试使用另一个lifecyclehook

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

val refInfoLiveData: MutableLiveData<RefInfo?> by lazy { MutableLiveData<RefInfo?>() }
当第一次创建片段时,只调用一次
observe
,但是片段进入后台,然后返回,它被调用多次,这导致了问题

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

任何帮助都将不胜感激。

也许您可以尝试使用另一个lifecyclehook,因为
onResume()
是最常调用的入口挂钩

onCreate()中尝试它

也许您可以尝试使用另一个lifecyclehook,因为
onResume()
是最常调用的入口挂钩


onCreate()
中尝试它,这是因为您应该在
onViewCreated
中使用
observe(viewLifecycleOwner,observator{…

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) }
    }
}

目前,如果你将应用程序放在后台,然后将其放在前台无限次,你将拥有无限多的订户。

这是因为你应该使用
观察(viewLifecycleOwner,Observer{…
onViewCreated

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) }
    }
}

当前,如果你将应用程序放在后台,然后将其放在前台无限次,你将拥有无限多的订户。

检查此线程:@ZachBvy这是一个不同的问题,仅适用于从文件室获得的查询结果。检查此线程:@ZachBvy这是一个不同的问题,仅适用于查询结果从Room获得。将其移动到onActivityCreated将解决该问题,但在我的情况下,它会产生不同的问题,因此我需要将其保留在简历中。不要使用
onActivityCreated
,在我所知的@Tartar的任何场景中都没有理由使用它,如果您想将其保留在
onResume
中,您需要实现您的own
LifeCycleOwner
不要使用默认的
viewLifecycleOwner
@d4ku3,请在链接页面中包含一些相关内容,以防链接被破坏。告诉读者通过链接他们会发现什么也会很有帮助。@Broaster当然,也许你可以告诉我如何包含图片,想知道吗生命周期图如何将其绘制为onActivityCreated将解决该问题,但在我的情况下,它会产生不同的问题,因此我需要将其保留在onResume中。不要使用
onActivityCreated
,我知道@tartartart的任何场景中都没有理由使用它,如果您想将其保留在
onResume
中,您需要实现y我们自己的
LifeCycleOwner
不是使用默认的
viewLifecycleOwner
@d4ku3,请在链接页面中包含一些相关内容,以防链接被破坏。如果读者通过链接了解他们会发现什么,这也会很有帮助。@Producer当然,也许你可以告诉我如何包含图片^,to显示生命周期图