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
中,您需要实现您的ownLifeCycleOwner
不要使用默认的viewLifecycleOwner
@d4ku3,请在链接页面中包含一些相关内容,以防链接被破坏。告诉读者通过链接他们会发现什么也会很有帮助。@Broaster当然,也许你可以告诉我如何包含图片,想知道吗生命周期图如何将其绘制为onActivityCreated将解决该问题,但在我的情况下,它会产生不同的问题,因此我需要将其保留在onResume中。不要使用onActivityCreated
,我知道@tartartart的任何场景中都没有理由使用它,如果您想将其保留在onResume
中,您需要实现y我们自己的LifeCycleOwner
不是使用默认的viewLifecycleOwner
@d4ku3,请在链接页面中包含一些相关内容,以防链接被破坏。如果读者通过链接了解他们会发现什么,这也会很有帮助。@Producer当然,也许你可以告诉我如何包含图片^,to显示生命周期图