如何解决每次创建Fragment
我发现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 举报,一经查实,本站将立刻删除。