实例化和关闭 Realm 实例

Instantiating and closing Realm instances

我对 how/when/why 关闭领域实例有点困惑。在我的应用程序的整个过程中,我从未在我的领域实例上调用过 .close(),因为如果我关闭它,我将无法再使用我处理的领域对象。也许关闭领域实例的点在我的应用程序 onDestroy() 中,就像我在我的应用程序 onCreate() 中创建实例一样。实际上我玩的是在我的应用程序中创建的 Realm [*] 的单例实例。

这是(一个 Realm 单例)的好方法吗?如果我从不关闭我的领域会发生什么?

[*] 事实上,现在我正在考虑在 Realm 实例的 Flywheight 集合中,改为为每个线程存储一个实例,因为现在服务意图开始在我的应用程序中发挥作用,需要从其线程访问 Realm。我想在这里(在服务意图中),我可以在 onDestroy() 中关闭领域,因为线程将完成工作。

Realm 在内部处理缓存并将使其尽可能高效。所以你不应该害怕调用Realm.getInstance()。原因是 close() 是必需的,因为您可能会冒内存泄漏的风险,最终会杀死您的应用程序。

总之不要自己做Realm单例或者其他缓存模式。 您可以在此处阅读有关控制 Realm 生命周期的最佳实践的更多信息:https://realm.io/docs/java/latest/#controlling-the-lifecycle-of-realm-instances

请注意 Application.onDestroy() 不存在,普通应用程序不会调用 Application.onTerminate()