android - 为什么 LiveData 观察者返回一个以前的数据

标签 android android-livedata

我有一个 RecyclerView,其中包含来自 API 的数据。 从 RecyclerView 按下一个项目后,会打开一个带有另一个 API 调用的新 fragment ,我在其中根据按下的项目的 ID 获取新数据。

当我按下第一个元素时,一切正常 - OBSERVER 从 API 调用中向我发送对象,并触发一次 - 好的。 问题是当我从 Recycler 中按随机第二个元素时,因为 OBSERVER 首先会触发上一次调用的对象,然后会触发正确的对象。

解决方案之一是放置一个 IF 并仅监听第二个触发器,但在这种情况下,当我第一次按下时将不起作用,因为它只会触发一次,我将等待第二个。

你知道如何让观察者只触发一次或每次触发两次吗?

最佳答案

我在 Why LiveData observer is being triggered twice for a newly attached observer 上找到了一个很好的答案

在上面的文章中有 2 个选项-解决方案,对我来说,当您再次订阅观察者时,我只使用了那个。所以在我的例子中,我将 API 调用从新 fragment 移动到 recyclerview fragment ,并在 Recyclerview 中完成了 2 个订阅,1 个在新 fragment 中完成了订阅。现在它在 Recyclerview fragment 中触发 2 次,在新 fragment 中触发 1 次。

关于android - 为什么 LiveData 观察者返回一个以前的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61886222/

相关文章:

java - 在单个 Activity 中动态实现多个 fragment

android - 使用工具栏导航回父 Activity

android - Eclipse 不显示 Android XML 文件的图形布局

android - 第一次点击时显示 AutoCompleteTextView

android - 当 Retrofit 请求失败或成功时,如何在 Repository 和 ViewModel 类之间进行通信?

android - 如何通过工作链观察工作管理器中的实时数据?

android - 具有不同项目高度和 WRAP_CONTENT 的 ViewPager2

android - 如何对返回 livedata 的函数进行单元测试

android - LiveData 的更新值丢失

android - 什么时候使用 Android 的 LiveData 和 Observable 字段?