gpt4 book ai didi

android - 工作线程上的 SqlBrite 查询

转载 作者:行者123 更新时间:2023-11-30 01:36:30 24 4
gpt4 key购买 nike

我对 rxAndroid/rxJava 还是有些陌生,所以我在思考这个问题以及我是否正确地做所有事情时遇到了一些麻烦。

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

下面的代码似乎是我能够让 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));

最佳答案

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

关于android - 工作线程上的 SqlBrite 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35043962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com