繁体   English   中英

如何在Android中关闭领域对象

[英]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生命周期的这两部分:

https://realm.io/docs/java/latest/#closing-realms

https://realm.io/docs/java/latest/#realm-instance-lifecycle

try(Realm r = Realm.getDefaultInstance()) {
    r.executeTransaction((realm) -> {
        realm.deleteAll();
    }); 
} // <-- auto-close

但是您需要为每个getInstance()调用close()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM