我对如何/何时/为何关闭 Realm 实例感到有点困惑。在我的应用程序的整个过程中,我从未在我的 Realm 实例上调用过 .close()
,因为如果我关闭它,我将无法再使用我处理的 Realm 对象。也许关闭 Realm 实例的点在我的应用程序 onDestroy()
中,就像我在我的应用程序 onCreate()
中创建实例一样。实际上,我使用的是在我的应用程序中创建的 Realm [*] 的单例实例。
这是(一个 Realm 单例)一个好的方法吗?如果我从不关闭我的 Realm 会发生什么?
[*] 事实上,现在我正在考虑在 Realm 实例的 Flywheight 集合中,改为为每个线程存储一个实例,因为现在服务 Intent 开始在我的应用程序中发挥作用,需要从其线程访问 Realm。我想在这里(在服务 Intent 中),我可以在 onDestroy()
中关闭 Realm ,因为线程将完成工作。
最佳答案
Realm 在内部处理缓存并将使其尽可能高效。所以你不应该害怕调用 Realm.getInstance()
。原因是 close()
是必需的,因为您可能会冒内存泄漏的风险,这最终会杀死您的应用程序。
简而言之,你不应该自己做一个 Realm 单例或其他缓存模式。 您可以在此处阅读有关控制 Realm 生命周期的最佳实践的更多信息:https://realm.io/docs/java/latest/#controlling-the-lifecycle-of-realm-instances
请注意,Application.onDestroy()
不存在,普通应用程序不会调用 Application.onTerminate()
。
关于android - 实例化和关闭 Realm 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37074326/