我想在领域中使用findAllAsync()。asObservable()。我使用的领域对象是在应用程序类中创建的全局实例。问题是observable必须在UI Thread上订阅,因为你不能将realm对象从一个线程移动到另一个线程,并且UI线程被阻塞直到findAllAsync完成。所以我的问题是我应该如何实现我的领域逻辑和rx逻辑来解决这个问题?
答案 0 :(得分:0)
findAllAsync()
不会被屏蔽。这就是为什么它首先被称为async
。
但是,如果您获得结果集并开始映射整个列表,那么您将需要读取每个元素,这会抛出延迟加载。
Subscription subscription = realm.where(Blah.class)
.findAllAsync()
.asObservable()
.filter(RealmResults::isLoaded)
//.map() <-- no map!
//.map(Realm::copyFromRealm) <-- NO copy from realm!
.subscribe(...);