我对 rxAndroid/rxJava 还是有点陌生,所以我在思考这个问题以及我是否正确地做所有事情时遇到了一些麻烦。
我正在使用 SqlBrite 使用从游标返回的行来更新 RecyclerView。当对表执行 db 操作时,下面的 observable 负责重新查询数据。我想返回一个 CursorWrapper (ChecklistCursor),但想确保我在工作线程上运行 select * 查询。checklistRecyclerAdapter 订阅 ChecklistCursor observable,负责管理游标。
下面的代码似乎是我能够让 query.run() 在工作线程上运行并在主线程上返回订阅的唯一方法。
我想它有效,但我不相信这将是执行此操作的标准方法。谁能提供比两次使用 observeOn 更好的方法?
compositeSubscription.add(db.createQuery(Checklist.TABLE, Checklist.QUERY_ALL)
.observeOn(Schedulers.newThread())
.map(query -> new ChecklistCursor(query.run()))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(checklistListRecyclerAdapter));