我在我的应用程序中有一个工作流程,用户可以在其中保存一些内容,之后会出现一个对话框,其中包含要登录的提示。在我的Android监视器中,出现以下警告:"记得在所有Realm实例上调用close()。 Realm /data/data/files/default.realm正在最终确定而未被关闭,这可能导致本机内存耗尽。"
我已经阅读了建议使用的文档(https://realm.io/docs/java/latest/)" try-with-resources" (https://realm.io/docs/java/latest/#closing-realm-instances)。 所以每个Realm Transaction都在
之内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实例。但这并不能避免这种警告。提前谢谢!
答案 0 :(得分:0)
我结束了以下解决方案。在我的常规课程中,我使用了这样的try catch块:
try (Realm realm = Realm.getDefaultInstance()) {
Repository.doSomething(realm);
} catch (Exception e){
e.printStackTrace();
}
所以我在我的存储库类中使用了realm实例,并且在try catch块中返回数据后它们会被关闭。
感谢您的帮助!