[英]How to close realm object in android
我正在尝试检查是否有任何领域对象正在事务中,以便可以删除整个数据库。 但是此语句始终returns false
。 Realm.getDefaultInstances().isClose()
。 有人请解释一下。
if(!Realm.getDefaultInstances().isInTransaction()){
Realm.getDefaultInstances().close();
if(Realm.getDefaultInstances().isClosed()){
Realm.getDefaultInstance().executeTransaction(new Realm.Transaction(){
@Override
public void execute(Realm realm) {
realm.deleteAll();
realm.close();
}
});
}
}
Realm实例是引用计数的,因此在您的示例中,在每个方法之前调用Realm.getDefaultInstance()
会将其计数至少增加到4,这意味着您还需要调用.close()
4次。
请注意,在事务lambda中调用close()
将导致事务未提交。 收盘必须在外面。
我强烈建议阅读有关控制Realm生命周期的这两部分:
try(Realm r = Realm.getDefaultInstance()) {
r.executeTransaction((realm) -> {
realm.deleteAll();
});
} // <-- auto-close
但是您需要为每个getInstance()
调用close()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.