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

时间:2020-05-19 08:10:55

标签: android android-livedata

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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次。