rxjava : 多种取消订阅 dispose 的方法

参考:

RxJava2 中多种取消订阅 dispose 的方法梳理( 源码分析 )

subscribe(Consumer)时返回了 disposable:

Disposable disposable = Observable.just(1, 2, 3)
        .subscribe(new Consumer<Integer>() {
            @Override
            public void accept(Integer integer) throws Exception {
                System.out.println("1==========Consumer accept===========");
            }
        });

boolean disposed = disposable.isDisposed();
if (disposed) {
    disposable.dispose();
}

subscribe(Observer)不返回 disposable, 从 observer 的 onSubscribe 中获取:

private Disposable mDisposable;

Observable.just(1, 2, 3)
    .subscribe(new Observer<Integer>() {
        @Override
        public void onSubscribe(Disposable d) {
            mDisposable = d;
        }

        @Override
        public void onNext(Integer integer) {

        }

        @Override
        public void onError(Throwable e) {

        }

        @Override
        public void onComplete() {

        }
    });

if (mDisposable != null && !mDisposable.isDisposed()) {
	mDisposable.dispose();
}

CompositeDisposable:当有多个Disposable要处理

Disposable disposable1 = Observable.just(1, 2, 3)
    .subscribe(new Consumer<Integer>() {
        @Override
        public void accept(Integer integer) throws Exception {
            System.out.println("1==========Consumer accept===========");
        }
    });
Disposable disposable2 = Observable.just(9, 8, 7)
    .subscribe(new Consumer<Integer>() {
        @Override
        public void accept(Integer integer) throws Exception {
            System.out.println("2==========Consumer accept===========");
        }
    });

CompositeDisposable compositeDisposable = new CompositeDisposable();
compositeDisposable.add(disposable1);
compositeDisposable.add(disposable2);

if (compositeDisposable.isDisposed()) {
	compositeDisposable.dispose();
}

DisposableObserver : 可以直接 dispose


DisposableObserver<Integer> disposableObserver = Observable.range(1, 5)
    .subscribeWith(new DisposableObserver<Integer>() {

        @Override
        public void onNext(Integer integer) {
            if (integer == 3) {
                dispose();
            }
            System.out.println("integer=============" + integer);
        }

        @Override
        public void onError(Throwable e) {
            System.out.println("=======onError======" + e.getMessage());
        }

        @Override
        public void onComplete() {
            System.out.println("======onComplete======");
        }
    });

if (disposableObserver.isDisposed()) {
    disposableObserver.dispose();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值