记得在所有 Realm 实例上调用 close(),但所有内容都应该关闭



>im 在我的应用程序中有一个工作流程,用户可以在其中保存某些内容,然后会出现一个对话框,其中包含登录提示。在我的 Android 监视器中,出现了以下警告:"记得在所有 Realm 实例上调用 close((。Realm/data/data/files/default.realm 正在完成而没有关闭,这可能会导致本机内存不足。

我阅读了文档(https://realm.io/docs/java/latest/(,其中建议使用"尝试资源"(https://realm.io/docs/java/latest/#closing-realm-instances(。 所以每个领域事务都在里面

try (Realm realm = Realm.getDefaultInstance()) {
// No need to close the Realm instance manually
}

在这个块内,我使用

realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
// do Something
}
});

所以总结一下:

try (Realm realm = Realm.getDefaultInstance()) {
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
// do Something
}
});
}

谁能向我解释为什么会出现这个警告?我甚至尝试添加一个 finally 块,我手动关闭 Realm 实例。但这并不能避免警告。提前感谢!

我以以下解决方案结束。在我的常规课程中,我使用了 try catch 块,如下所示:

try (Realm realm = Realm.getDefaultInstance()) {
Repository.doSomething(realm);
} catch (Exception e){
e.printStackTrace();
}

因此,我在我的存储库类中使用领域实例,并且在它们返回 try catch 块中的数据后,它们就会关闭。

感谢您的帮助!

最新更新