作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试检查是否有任何 Realm 对象在事务中,以便我可以删除整个数据库。但是这个语句总是返回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 生命周期的部分:
关于android - 如何在android中关闭 Realm 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46149392/
我是一名优秀的程序员,十分优秀!