Realm executeTransactionAsync是否关闭实例

时间:2017-11-14 14:06:22

标签: android realm

标题说明了一切。我已经做了一些搜索,但没有找到具体的东西。

在执行realm.executeTransactionAsync之后是否需要调用realm.close或是否执行异步事务处理?

谢谢

编辑:根据EpidPandaForce,executeTransactionAsync在完成后关闭后台域实例。

但是,如果从UI线程调用executeTransactionAsync,关闭realm实例的正确方法是什么?在onSuccess / onFailure上的交易中?

2 个答案:

答案 0 :(得分:3)

您似乎正在寻找以下方案。

public void doWrite(MyObject obj) {
    Realm realm = Realm.getDefaultInstance(); 
    realm.executeTransactionAsync(new Realm.Transaction() {
        @Override
        public void execute(Realm bgRealm) {
            bgRealm.insert(obj); // assuming obj is unmanaged
        }
    }, new Realm.Transaction.OnSuccess() {
        @Override
        public void onSuccess() {
            realm.close();
        }
    }, new Realm.Transaction.OnError() {
        @Override
        public void onError(Throwable error) {
            realm.close();
        }
    });
}

答案 1 :(得分:0)

在科特林

fun doWrite(obj: RealmObject) {
        val realm = Realm.getDefaultInstance()
        realm.executeTransactionAsync({ bgRealm ->
            bgRealm.insert(obj) // assuming obj is unmanaged
        }, { realm.close() }, { realm.close() })
    }