RxJava 解除订阅---------Disposable.dispose()方法

有时候我们需要解绑订阅,或者取消订阅, 

这个时候就使用到了 Disposable.dispose()方法下面以一个案例说下使用方法

  //Disposable.dispose()切断观察者 与 被观察者 之间的连接
        findViewById(R.id.rx_break_link).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //创建被观察者 & 生产事件
                //create()作用是创建被观察者对象,是最基本的操作符,只有创建
                //just()作用不能能创建还能发射对象等会通过案例对比下
                Observable.create(new ObservableOnSubscribe() {
                    @Override
                    public void subscribe(ObservableEmitter emitter) {
                        emitter.onNext("哈喽! Rxjava");
                        emitter.onNext("嗨! Rxjava");
                        emitter.onNext("喂! Rxjava");
                        emitter.onComplete();
                    }
                    //subscribe订阅者连接观察者和被观察者
                    //Observer 创建观察者 & 定义响应事件的行为
                }).subscribe(new Observer() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        mDisposable = d;//对Disposable类变量赋值
                        Log.d("-----rxjava", "开始采用subscribe连接");
                    }

                    @Override
                    public void onNext(String s) {
                        if (s.equals("嗨! Rxjava")){
                            mDisposable.dispose();
                        }
                        Log.d("-----rxjava", "对Next事件作出响应:" + s);
                    }
                    @Override
                    public void onError(Throwable e) {
                        Log.d("-----rxjava", "对Error事件作出响应" + e);
                    }
                    @Override
                    public void onComplete(){
                        Log.d("-----rxjava", "对onComplete事件作出响应:RxJava认识完成");
                    }
                });
            }
        });

解绑之后效果图

RxJava 解除订阅---------Disposable.dispose()方法_第1张图片

 

没有解绑点击的效果图

RxJava 解除订阅---------Disposable.dispose()方法_第2张图片

你可能感兴趣的:(Android,知识点记录)