为什么LiveData观察者返回以前的数据

问题描述 投票:0回答:2

我有一个带有API数据的RecyclerView。从RecyclerView按下项目后,将使用另一个API调用打开一个新片段,在此我从按下的项目中获取基于ID的新数据。

[当我按下第一个元素时,一切都很好-OBSERVER通过API调用向我发送对象,并触发一次-好的。问题是当我按下Recycler中的随机第二个元素时,因为OBSERVER首先将使用上一次调用的对象触发,之后将使用正确的对象触发。

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

您知道该观察者只触发一次还是每次触发两次?

android android-livedata
2个回答
0
投票

确保仅创建一次liveData,并确保仅订阅一次(而不是每次按一次)


0
投票

我在https://android.developreference.com/article/12191946/Why+LiveData+observer+is+being+triggered+twice+for+a+newly+attached+observer上找到了很好的答案

在上面的文章中有2个选项解决方案,对我来说,当您再次订阅观察者时,我只能使用一个。因此,在我的情况下,我将API调用从新片段移动到recyclerview片段,并在Recyclerview中完成了2个订阅1,在新片段中进行了1个订阅。现在,它在Recyclerview片段中触发2次,在新片段中触发1次。

© www.soinside.com 2019 - 2024. All rights reserved.