首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >工作线程上的SqlBrite查询

工作线程上的SqlBrite查询
EN

Stack Overflow用户
提问于 2016-01-28 01:20:38
回答 1查看 422关注 0票数 1

我对rxAndroid/rxJava还是比较陌生的,所以如果我做的每件事都是正确的,我就会遇到一些麻烦。

我使用SqlBrite用游标返回的行更新RecyclerView。当对表执行db操作时,下面的可观察对象负责重新查询数据。我想返回一个CursorWrapper (ChecklistCursor),但希望确保我是在工作线程上运行select *查询。checklistRecyclerAdapter订阅ChecklistCursor observable并负责管理游标。

下面的代码似乎是我能够让query.run()在工作线程上运行,并使订阅在主线程上返回的唯一方法。

我猜它是有效的,但我不相信这将是标准的方式。有谁能提供比两次使用observeOn更好的方法吗?

代码语言:javascript
复制
compositeSubscription.add(db.createQuery(Checklist.TABLE, Checklist.QUERY_ALL)
    .observeOn(Schedulers.newThread())
    .map(query -> new ChecklistCursor(query.run()))
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(checklistListRecyclerAdapter));
EN

回答 1

Stack Overflow用户

发布于 2016-01-28 20:06:04

我将第一个observeOn调用替换为subscribeOn(Schedulers.io()),以便在后台线程中执行查询操作。Map操作符仍将在后台线程中执行该操作,在此之后,您可以使用observeOn进行更改以更新适配器。我认为这是唯一的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35043962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档