如果操作系统破坏了我的应用程序进程并且仍然打开了Realm实例,但没有执行任何事务,那么当我的应用程序再次启动时,是否有可能导致问题?如果没有,为什么不在应用程序的自定义Application
类onCreate
方法中打开Realm实例,存储对它们的全局引用,然后让操作系统关闭它们,如果/当它结束你的应用程序时?
答案 0 :(得分:1)
UI线程上的这种方法没有任何遗传错误,因为它是一个自动更新Realm的Looper线程,但请记住,您需要为每个要处理的线程使用Realm实例。
Realm是一个MVCC数据库,这意味着它可以同时保持多个版本的数据存活。这意味着如果您在非looper线程上保持Realm实例打开,Realm将必须跟踪最旧版本和最新版本之间的所有更改。这可能会使文件大小膨胀。
一般情况下,我们建议按照以下链接中的说明控制生命周期。这将防止任何问题。
https://realm.io/docs/java/latest/#closing-realm-instances https://realm.io/docs/java/latest/#controlling-the-lifecycle-of-realm-instances