如何关闭Realm.getDefaultInstance打开的领域?

Non*_*hoi 10 android realm

我正在使用领域来存储和检索数据.通常当我们打开一个领域来存储一些我们喜欢的数据时:

Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
// Copy the object to Realm
realm.copyToRealm(myObject);
realm.commitTransaction();
realm.close();
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我正在关闭这个领域.

但是当我检索一些数据时:

RealmResults<MyClass> results = Realm.getDefaultInstance().where(MyClass.class).findAll();
Run Code Online (Sandbox Code Playgroud)

我如何关闭这个领域?是否需要关闭?

Chr*_*ior 16

将它作为一个单行程表示意味着你无法关闭领域,所以我会建议不要这样做.

在最好的情况下,不关闭Realm将导致您泄漏内存并且如果在后台,则系统被系统杀死的可能性更高.最糟糕的情况是,您会看到磁盘使用率大幅增加,因为Realm必须跟踪已打开的Realm实例的所有版本(由于是MVCC数据库).

我强烈建议使用你的第一个模式.有关控制Realm实例的更多信息,请参阅:https://realm.io/docs/java/latest/#realm-instance-lifecycle和此https://realm.io/news/threading-deep-dive /

  • 但是Logcat中的警告大喊"记得在所有Realm实例上调用close()".Realm /data/data/com.foo.bar/files/default.realm正在最终确定而未被关闭,这可能会导致本机内存耗尽.? (2认同)