美文网首页
开发中遇到.observeOn(AndroidScheduler

开发中遇到.observeOn(AndroidScheduler

作者: Lost_Robot | 来源:发表于2018-05-09 15:27 被阅读72次

    开发中使用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中无时无刻都要注意的地方。

    相关文章

      网友评论

          本文标题:开发中遇到.observeOn(AndroidScheduler

          本文链接:https://www.haomeiwen.com/subject/dnanrftx.html