【发布时间】:2018-03-20 15:00:14
【问题描述】:
我使用 RxJava 的原始 Realm 包装器。这样:
Flowable<RealmResult<RealmUser> result =
realm.where(RealmUser.class)
.findAllAsync()
.asFlowable();
数据在 Realm Background 线程上加载并发送到 Main 线程。 我的问题是我需要将大量 Realm 对象映射到自己的 POJO(独立业务层)。领域对象不能在线程之间传递。这意味着我必须在主线程上映射对象,这是不受欢迎的并阻塞主线程。你知道在后台线程上执行映射并使用类似的方式吗?是否可能发出 RealmResult 的非托管副本(直接在 Realm 的后台线程上)?我找不到类似的方法。
使用 copyFromRealm 不是很好的选择,因为结果与我自定义映射的情况相同。
此时我只为具有我需要的属性的用户使用新的模型类。结果是映射时间较短,但在导致 UI 工件的主线程上。
谢谢
【问题讨论】:
-
一个可能的选择是使用我创建的名为 Monarchy 的库,它将数据公开为 LiveData,观察后台线程上的查询更改,并允许在所述后台线程上进行映射。
-
你为什么不直接切换到另一个带有 observeOn 的调度器并映射你的模型,然后你可以再次在主线程上使用它们
-
@elmorabea 请再次阅读我的问题。你恢复我需要的东西。 RealmResult 不能切换到不同的线程(从主线程到后台)。
标签: java android multithreading realm rx-java2