java领域更改侦听器已停止工作
我使用的是Realm 3.5.0
我在RealmResults中添加了ChangeListener。有时,在RealmResults(如创建或删除对象)发生少量更改后,它会停止工作,有时需要一些时间才能停止。我正在使用firebase更新领域数据库
RealmResults<Prize> resPrizeListner = realm.where(Prize.class).equalTo("person", personPrize).findAll();
if (personPrize.equals(user.getUid())) {
resPrizeListner.addChangeListener(new RealmChangeListener<RealmResults<Prize>>() {
@Override
public void onChange(RealmResults<Prize> prizes) {
if (prizes.size() == 0) {
queryPrize = realm.where(Prize.class).equalTo("id", 0);
setAdapterPrizes(queryPrize);
} else if (prizes.size() > 0) {
queryPrize = realm.where(Prize.class).equalTo("person", personPrize);
setAdapterPrizes(queryPrize);
}
}
});
}
这是我用对话框删除对象的方式
final RealmResults<Prize> resPrizeDelete = realm.where(Prize.class)
.equalTo("id", id)
.findAll();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Prize deletePrize = resPrizeDelete.get(0);
deletePrize.deleteFromRealm();
}
});
以及如何通过对话框添加新项目
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Prize prize = new Prize();
prize.setId(System.currentTimeMillis());
prize.setPerson(user.getUid());
...
realm.copyToRealmOrUpdate(prize);
}
});
我在网上找不到解决这个问题的办法。提前感谢您的帮助:)
# 1 楼答案
Realm为RealmResults保留一个弱引用,用于通知它,因此如果不将其存储为字段变量,那么它将被垃圾收集,不再收到通知
需要