首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlBrite不能使用AndroidSchedulers.mainThread()

SqlBrite不能使用AndroidSchedulers.mainThread()
EN

Stack Overflow用户
提问于 2017-02-21 19:01:26
回答 2查看 562关注 0票数 0

我刚开始使用sqlbrite,rxjava。因此,我必须在UI线程上运行一些代码(具体地说,在地图上添加一些来自coursor的标记,这些标记来自更新的数据库SELECT查询)。

这是我的启动设置:

代码语言:javascript
复制
sqlBrite = new SqlBrite.Builder().build();
resolver = sqlBrite.wrapContentProvider(mContentResolver, Schedulers.io());
Observable<SqlBrite.Query> query = resolver.createQuery(SmogContract.MeasurementEntry.CONTENT_URI, null, null, null, null, true);

然而,当我想这样做的时候:

代码语言:javascript
复制
query.observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Subscriber<SqlBrite.Query>() {
                @Override
                public void onCompleted() {

                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onNext(SqlBrite.Query query) {
                        ////add marker on a map from updated cursor select for latlng which I have in db
                        /// db is updated in some intervals from API
                }
            });

它给了我一个关于AndroidSchedulers.mainThread方法的错误:

代码语言:javascript
复制
observeOn (Rx.Scheduler) in Observable cannot be applied to io.reactivex.Scheduler

在我的gradle中,我有一个与sqlbrite,rxjava相关的代码:

代码语言:javascript
复制
compile 'com.squareup.sqlbrite:sqlbrite:1.1.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.0.1'

还有retrolambda。如何正确设置?没有rxandroid和rxjava,我就不能使用AndroidSchedulers.mainThread()。

EN

回答 2

Stack Overflow用户

发布于 2017-02-21 21:06:46

您使用的是RxJava2,但SQLBrite依赖于RxJava1。因为RxJava2是一个不同的库(重写而不是向后兼容),所以两个版本都包含在您的项目中。我怀疑您已经导入了io.reactivex.schedulers (从RxJava2),其中您的查询是一个RxJava1可观察对象,即observeOn需要一个来自rx.schedulers的调度器。

票数 1
EN

Stack Overflow用户

发布于 2017-02-21 22:24:20

所以,如果有人对此感兴趣--现在我可以使用下面的设置:

gradle:

代码语言:javascript
复制
compile 'com.squareup.sqlbrite:sqlbrite:1.1.1'
compile 'io.reactivex:rxandroid:1.2.1'

和我活动中的导入:

代码语言:javascript
复制
import rx.Observable;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42365514

复制
相关文章

相似问题

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