Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 碎片中的领域生命周期_Java_Realm - Fatal编程技术网

Java 碎片中的领域生命周期

Java 碎片中的领域生命周期,java,realm,Java,Realm,根据领域文档,为了正确处理领域生命周期,领域实例必须在每个onCreate(在活动中)和onStart(Frags)中打开, 然后在每个活动(onDestroy())和frags(onStop())中关闭 在我的片段中,数据处理是从onCreate()开始的,它发生在onStart()之前 我决定欺骗并在片段的onCreate()中实例化mRealm实例。我的片段有一个带有recyclerview.Adapter的recyclerview(不是RealmBaseAdapter,因为我不知道如何让

根据领域文档,为了正确处理领域生命周期,领域实例必须在每个onCreate(在活动中)和onStart(Frags)中打开, 然后在每个活动(onDestroy())和frags(onStop())中关闭

在我的片段中,数据处理是从onCreate()开始的,它发生在onStart()之前

我决定欺骗并在片段的onCreate()中实例化mRealm实例。我的片段有一个带有recyclerview.Adapter的recyclerview(不是RealmBaseAdapter,因为我不知道如何让它为recyclerview工作)。现在问题来了:

java.lang.IllegalStateException:此领域实例已关闭,无法使用

在适配器中调用getItemCount()后,从Activity1 Fragment1移动到Activity2 Fragment2时会发生这种情况。作为调试,我在调用getItemCount()之前使用logcat输出mRealm.isClosed(),这确认了域不是null,也不是关闭的。但我仍然明白,这个领域已经被关闭了

作为临时解决方案,我禁用了Fract1中的Maleal.Cuffe(),它似乎解决了这个问题,但这只是一个创可贴。


有什么想法吗?

对于片段也可以使用
onCreate
/
onestory
。唯一的缺点是,您的片段可能会被缓存,这意味着在应用程序实际被杀死之前,
ondestory
不会被调用

请注意,如果您只在片段中使用领域,那么第一个片段关闭和第二个片段打开之间可能没有重叠。这意味着领域将完全关闭并释放所有资源


内部领域缓存是引用计数的,因此如果您的所有活动在
onCreate
期间打开领域,并在
onDestroy
(即使你没有在活动中直接使用它,你也应该在UI线程上始终有一个live Realm实例。

你使用的是什么版本的Realm?你能分享一些代码吗?我的情况与@RJFares完全相同。当我从Activity1>Fragment1移动到Activity2,然后再返回Activity1>Fragment1时,应用程序会不断崩溃。但是如何我能实现“在UI线程上始终有一个活动领域实例”吗?