2016-06-08 84 views
0

我与Realm玩弄,我总是发现Realm.getInstance()在Activity的创建过程中被调用,实例在Activity的destroy中被关闭。我可否知道是否有任何副作用,只有一个实例创建并一直打开,直到应用程序关闭?我可以只在应用程序中调用Realm.getInstance()一次吗?

+0

我的,因为它保持了的getInstance计数器(规格看到:您可以了解如何在这里控制领域实例的生命周期。因此,如果调用X次getInstance(),则必须调用X次close()。所以,我的问题就像我是否可以在应用程序创建中调用一次getInstance(),并在应用程序中删除一次close()。 – Rice

回答

1

没有Application onDestroy。 Realm在内部执行必要的缓存操作,因此应尽可能多次调用Realm.getInstance()/ close()。

试图做自己的缓存不会使任何更高效。 )

https://realm.io/docs/java/latest/#controlling-the-lifecycle-of-realm-instances https://realm.io/docs/java/latest/#closing-realm-instances

+0

感谢您的信息,并为我的错误感到抱歉。顺便问一下,我可以再问一个跟进问题吗?正如你提到“多次你想要的”,是否有任何缺点让我在每个数据库操作中调用getInstance()/ close()而不是在Activity onCreate()/ onDestroy()中做? (因为我想让事情与Activity脱钩) – Rice

+0

如果您完全关闭Realm文件(因为我们需要在再次打开它时验证它),并且您的RealmObjects仅在Realm处于打开状态时可用,所以会有小的开销。所以对于每个操作关闭的后台线程都很好。在UI线程中,您最有可能只想在onCreate/onDestroy –

+0

中执行此操作感谢您提供详细信息。 ;) – Rice

相关问题