RxJava基本使用--上游与下游

RxJava基本使用–上游与下游

var disposable : Disposable? = null

    private fun rxTest1() {
        //起点 被观察者
        Observable.create(ObservableOnSubscribe<Int> {
            emitter ->
            run {
                emitter.onNext(11)
                emitter.onComplete()
            }
        })

                //订阅被观察者与观察者
                .subscribe(

                //终点 观察者
                object : Observer<Int> {
            override fun onComplete() {

            }

            override fun onSubscribe(d: Disposable) {
                disposable = d
            }

            override fun onNext(t: Int) {
                Log.e("TAG","value=$t")
            }

            override fun onError(e: Throwable) {
            }
        })
    }
    
    override fun onDestroy() {
        super.onDestroy()
        cancel()
//当Activity销毁后,事件上游仍然在发送,则通过dispose()切断下游,让下游不再接收
        if (disposable != null) disposable!!.dispose()
    }

通过在上游发送数据,在下游接收数据。
其中执行顺序为:

未执行onComplete()
  1. onSubscribe()订阅关系。
  2. 被观察者中的emitter.onNext(11)语句
  3. 观察者中onNext()方法
执行onComplete()
  1. onSubscribe()订阅关系。
  2. 被观察者中的emitter.onNext(11)语句
  3. 观察者中onNext()方法
  4. 观察者中onComplete()完结方法
切断下游

当Activity销毁后,事件上游仍然在发送,则在onDestroy()方法中通过dispose()切断下游,让下游不再接收。

注意
  1. 执行完emitter.onComplete()方法后在其后的所有发射数据,观察者均不接收
  2. onError()方法与onComplete()方法只会执行一个,即报错后执行onError()方法后,即时调用了emitter.onComplete()也不执行。
  3. 被观察者中emitter.onComplete()后再调用emitter.onError()会使程序报错。
  4. 观察者中重写的onSubscribe()订阅关系的方法永远是第一个执行的方法。
  5. 观察者完整版:Observer 简化版:Consumer()仅实现onNext接收的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值