实例化和关闭Realm实例

时间:2016-05-06 13:59:09

标签: android persistence realm

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

这是(一个Realm单身人士)一个好方法吗?如果我从不关闭我的王国会发生什么?

[*]实际上现在我正在考虑Realm实例的Flywheight集合,而不是每个线程存储一个实例,因为现在Service Intent在我的应用程序中发挥作用并需要从其线程访问Realm。我想在这里(在Service Intent中),我可以在onDestroy()中关闭领域,因为线程将完成工作。

1 个答案:

答案 0 :(得分:0)

Realm在内部处理缓存,并使其尽可能高效。所以你不应该害怕打电话给Realm.getInstance()。原因是close()是必需的,你可能会冒泄漏内存的风险,这最终会导致你的应用程序被杀。

简而言之,您不应该自己制作Realm单例或其他缓存模式。 您可以在此处详细了解有关控制Realm生命周期的最佳实践:https://realm.io/docs/java/latest/#controlling-the-lifecycle-of-realm-instances

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