首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安卓LiveData observe被多次调用

安卓LiveData observe被多次调用
EN

Stack Overflow用户
提问于 2019-06-06 23:19:06
回答 2查看 1.7K关注 0票数 1

我有一个包含MutableLiveData字段的BaseActivity,如下所示

代码语言:javascript
运行
复制
val refInfoLiveData: MutableLiveData<RefInfo?> by lazy { MutableLiveData<RefInfo?>() }

当调用MutableLiveDataonStart方法时,将进行网络调用以填充此BaseActivity字段。

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

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

代码语言:javascript
运行
复制
    (activity as BaseActivity).refInfoLiveData.observe(this, Observer {
        it?.let { refInfo ->
            adapter?.setRefInfo(refInfo)
        }
    })

当第一次创建片段时,observe只调用了一次,但片段转到了后台,然后返回,它被调用了多次,这就导致了问题。

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

任何帮助都将不胜感激。

EN

Stack Overflow用户

回答已采纳

发布于 2019-06-06 23:38:27

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

代码语言:javascript
运行
复制
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) }
    }
}

目前,如果你把应用程序放在后台,然后把它放在前台无数次,你就会有无限多的订阅者。

票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56480597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档