问题描述
我发现Dao返回的LiveData每当创建我的Fragment时都会调用其观察者,即使LiveData值未更改也是如此。我有2个实体,它们具有这样的一对一关系:
public class PetAndTracker {
@Embedded
public Tracker tracker;
@Relation(
parentColumn = "serialNum",entityColumn = "trackerSerialNum"
)
public Pet pet;
public PetAndTracker() {
}
@Ignore
public PetAndTracker(Tracker tracker) {
this.tracker = tracker;
}
@Ignore
public PetAndTracker(Pet pet) {
this.pet = pet;
}
}
道法
@Transaction
@Query("SELECT * From Tracker")
LiveData<List<PetAndTracker>> getPetAndTrackerWithLiveData();
在我的Fragment onCreate()方法中,我像这样调用LiveData方法:
appDatabase.petDao()
.getPetAndTrackerWithLiveData()
.observe(this,new Observer<List<PetAndTracker>>() {
@Override
public void onChanged(List<PetAndTracker> list) {
...
}
});
onChanged返回数据库中的整个PetAndTracker列表,但是我只希望onChanged在数据真正更改时触发,或者我调用insert / update / delete方法。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)