如何在不同的线程中克隆RealmQuery?
问题:
1
相同的过滤器重新查询。截至目前,我正在获得java.lang.IllegalStateException: Realm accessed from incorrect thread.
使用RealmQuery.createQueryFromResult(RealmResults<E> queryResults)
尝试克隆。在内部克隆使用结果的相同领域实例。
如果queryResults
为空,克隆会如何表现?
如果可以在RxJava2中完成克隆,那会更好。
答案 0 :(得分:1)
使用与Z Thread中的1相同的过滤器重新查询。
在主线程中返回结果。
好的,所以这是完全没必要的,因为你可以创建一个RealmQuery并存储对RealmResults的字段引用,向它添加一个RealmChangeListener,当你在后台线程中插入Realm时,它会自动更新RealmResults并调用它RealmChangeListener。
因此,您不需要在Z线程中使用相同的过滤器重新查询&#34; (因为Realm的findAllSortedAsync()
已在后台线程上查询),并且您不需要在主线程中手动返回结果,因为findAllSortedAsync()
已经这样做了。
解决方案:使用Realm的通知系统(和异步查询API)。阅读文档:https://realm.io/docs/java/latest/#notifications