【发布时间】:2015-11-24 18:59:33
【问题描述】:
根据 Realm 文档,为了正确处理领域生命周期,必须在每个 onCreate(in Activities) 和 onStart(Frags) 中打开领域实例, 然后在每个activity(onDestroy()) 和frags(onStop()) 中关闭。
在我的片段中,数据处理是从 onCreate() 开始的,它发生在 onStart() 之前。
我决定在我的片段中的 onCreate() 中作弊并实例化 mRealm 实例。我的片段有一个带有 RecyclerView.Adapter 的 recyclerview(不是 RealmBaseAdapter,因为我不知道如何使它适用于 recyclerview)。现在问题来了:
java.lang.IllegalStateException: 这个 Realm 实例已经关闭,无法使用。
在调用适配器中的 getItemCount() 之后,从 Activity1 Fragment1 移动到 Activity2 Fragment2 时会发生这种情况。作为调试,我在调用 getItemCount() 之前使用 logcat 输出 mRealm.isClosed(),这证实了领域不为空且未关闭。但是我还是知道这个领域已经关闭了!
作为临时解决方案,我在 Fragment1 中禁用了 mRealm.close(),这似乎解决了解决方案,但这只是一个创可贴。
有什么想法吗?
【问题讨论】:
-
您使用的是什么版本的 Realm?你能分享一些代码吗?