我有以下查询,该查询仅从给定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
,但没有帮助