kotlin的RxJava进阶为RxJava2

RxJava进阶RxJava2

最近在之前做项目的时候用RxJava,后来了解了RxJava2后决定让项目的RxJava进阶为RxJava2。RxJava 2在Reactive-Streams规范的基础上完全重写。规范本身已经从RxJava发展而来,在使用RxJava2之前可以不需要学习RxJava。

  • Maven地址和基础包
  • 观察者模式
  • kotlin代码
  • 总结

Maven地址和基础包

  • Rxjava
// RxKotlin and RxAndroid
    compile "io.reactivex:rxkotlin:$rx_kotlin_version"
    compile "io.reactivex:rxandroid:${rx_android_version}"
  • RxJava2
 io.reactivex.rxjava2:rxjava:2.1.8
 io.reactivex.rxjava2:rxandroid:2.0.1
 io.reactivex.rxjava2:rxkotlin:2.2.0`

观察者模式

从图中可以看出RxJava 支持在Observeable订阅Observer和Suscriber两个类型,而RxJava2 分开了 Observeable订阅Suscriber这个类型,采用Flowable订阅Suscriber这个类型。

这里写图片描述

kotlin代码

下面我介绍下在项目中采用的Rxjava和进阶后的Rxjava2的代码区别

  • Rxjava

在用户模块实现类

class UserServiceImpl :UserService{


    override fun register(mobile: String, pwd: String, verifyCode: String): Observable<Boolean> {
      return  Observable.just(true)
    }

}

在业务层处理用户注册

 val userService=UserServiceImpl()
 userService.register(username,password,verityCode)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(object :Subscriber<Boolean>{
                    override fun onComplete() {
                    }

                    override fun onNext(t: Boolean) {
                        mView.result("注册成功")
                    }

                    override fun onError(e: Throwable) {

                    }

                })
  • Rxjava2

在用户模块实现类

class UserServiceImpl :UserService{

    override fun register(mobile: String, pwd: String, verifyCode: String): Flowable<Boolean> {
        return  Flowable.just(true)
}

}

在业务层处理用户注册

 val userService=UserServiceImpl()
userService.register(username,password,verityCode)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(object :Subscriber<Boolean>{
                    override fun onComplete() {

                    }

                    override fun onSubscribe(s: Subscription?) {

                    }

                    override fun onNext(t: Boolean?) {
                        mView.result("注册成功")
                    }

                    override fun onError(t: Throwable?) {

                    }

                })

总结

RxJava和RxJava2从本质上是一个升级。所背压是指在异步场景中,被观察者发送事件速度远快于观察者的处理速度的情况下,一种告诉被观察者降低发送速度的策略。RxJava2 通过Flowable完美的解决了背压问题,而RxJava中的解决背压问题设计并不完美。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值