android - 记得在所有 Realm 实例上调用 close() 但所有的东西都应该关闭

标签 android realm

我在我的应用程序中有一个工作流,用户可以在其中保存一些东西,然后会出现一个对话框,提示登录。在我的 Android 监视器中,显示以下警告:“请记住在所有 Realm 实例上调用 close()。Realm/data/data/files/default.realm 正在完成但未关闭,这可能会导致 native 内存耗尽。 “

我阅读了文档 ( 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
}

在这个 block 中我正在使用

                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 block ,我手动关闭 Realm 实例。但这并不能避免警告。提前致谢!

最佳答案

我以以下解决方案结束。在我的常规类(class)中,我使用了这样的 try catch block :

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

所以我在我的存储库类中使用 Realm 实例,它们在 try catch block 中返回数据后关闭。

感谢您的帮助!

关于android - 记得在所有 Realm 实例上调用 close() 但所有的东西都应该关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44948062/

相关文章:

Android-如何跳过第一个 Activity

ios - 检查 Realm 创建函数返回新的或更新的对象

ios - Swift Real - 如何将数据附加到在不同类中创建的对象

android - Gradle : No tests found

android - 更新 firebase 11 对 Android Gradle 的依赖

Android + phonegap + capture.captureAudio

Android InputStream 遵循重写规则

ios - 创建一个使用 RealmSwift 的自定义框架

java - 如何使用 Realm 创建递归关系?

Android Realm for 循环 - RealmResults 在循环期间被删除