LiveData onChanged被多次调用

时间:2018-07-19 12:23:28

标签: android observer-pattern android-room android-livedata

我有以下查询,该查询仅从给定id返回项目列表,而我正在观察返回的列表。

@Query("SELECT * FROM Model WHERE modelId IN (:ids)")
LiveData<List<Model>> getModels(List<String> ids);

我的问题是我正在动态发送要观察的ID,onChanged被调用X的次数是使用所有先前的值调用方法本身。

这是我在清单上的观察方式。

 @Override
public void setModels(List<String> ids) {
     getDatabase().modelsDao().getModels(ids).observe(this, models -> {
            if (models != null) {
                setFilterList(models);
            }
        });
  }

示例:

setModels(list(2 items));

第一次结果:

onChanged((list(2 items));


setModels((list(7 items));

第二次结果:

onChanged((list(2 items))
onChanged((list(7 items))

也尝试过removeObserver,但没有帮助

0 个答案:

没有答案