开发中遇到.observeOn(AndroidSchedulers.mainThread())报错

开发中使用io.reactivex遇到

log:
java.lang.NoClassDefFoundError: io.reactivex.Flowable

代码:

     val observable = Observable.defer(object : Callable<ObservableSource<TeslaResponseWithJson>> {

            override fun call(): ObservableSource<TeslaResponseWithJson> {
                //访问网络返回数据

                return Observable.just(SecurityManager.getInstance(context).doEncryptPost(PUBLIC_URL, TransId_GPSNumQuery, params))
            }
        })
                .subscribeOn(Schedulers.io())//io线程执行
                .observeOn(AndroidSchedulers.mainThread()) // 返回值在UI线程执行

.observeOn(AndroidSchedulers.mainThread()) 始终在报错

解决方案

     val observable = Observable.defer(object : Callable<ObservableSource<TeslaResponseWithJson>> {

            override fun call(): ObservableSource<TeslaResponseWithJson> {
                //访问网络返回数据

                return Observable.just(SecurityManager.getInstance(context).doEncryptPost(PUBLIC_URL, TransId_GPSNumQuery, params))
            }
        })
                .subscribeOn(Schedulers.io())//io线程执行
                .observeOn(AndroidSchedulers.mainThread(), false, 100) // 返回值在UI线程执行

原因分析

image.png

observeOn方法:

可以导入一个或两个或三个参数,且导入一个和两个参数的方法有个with Flowable字样,表示需要使用Flowable,导入三个参数的方法没有其字样,然后我用第三种方法observeOn(AndroidSchedulers.mainThread(),false,120),运行成功。

“island size”

这三个方法都提及到了”island size”,中文字面翻译“岛屿大小”,比较抽象,我把它叫做背压堆积大小。

rxJava 2.x中只有两个观察者:

  • 一个是Observable
  • 一个是Flowable

它合并了rxJava 1.x的Subscriber,并多了一个onSubscribe方法(即原来Subscriber的onStart方法),用来进行订阅的初始化操作。

Flowable

自动背压堆积并支持匹配背压堆积大小”island size”,Observable并不会,所以在Observable订阅时要多加入一个int值,用与指定背压堆积大小。

所以,背压概念是rxJava 2.x中无时无刻都要注意的地方。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 怎么如此平静, 感觉像是走错了片场.为什么呢, 因为上下游工作在同一个线程呀骚年们! 这个时候上游每次调用emit...
    Young1657阅读 1,672评论 2 1
  • 前言我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard...
    占导zqq阅读 9,296评论 6 151
  • 我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的...
    Jason_andy阅读 5,740评论 7 62
  • 转一篇文章 原地址:http://gank.io/post/560e15be2dca930e00da1083 前言...
    jack_hong阅读 1,028评论 0 2
  • 151. 天空是个照相机 太阳是它的快门键 152. 春天了 我把梦吵醒 让它出来晒晒太阳 153. 你并不难懂 ...
    年轻的风阅读 279评论 0 1

友情链接更多精彩内容