android - 实例化和关闭 Realm 实例

标签 android persistence realm

我对如何/何时/为何关闭 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/

相关文章:

android - 如何使用 livedata 进行数据绑定(bind)?

android - 如何在 Libgdx(非 UI?)线程中运行 Intent

maven - 在 persistence.xml 中使用 Maven 过滤的 Eclipse 错误

swift - Realm - RJSRealmDelegate.changes_available 断言(0)导致崩溃

ios - 主包中的 Realm realmWithPath 方法在 iOS 上崩溃

ios - 如何为单元测试创​​建虚假的 Realm 结果

android - Kotlin 错误 - 委托(delegate)调用链中有一个循环

android - TextInputlayout 在设置错误时将 edittext 变为红色

php - 如何在 PHP session 中存储对象?

python - 第二次 url 调用时类未刷新