Android 从循环中观察到的停止

Android 从循环中观察到的停止,android,rx-java,rx-java2,Android,Rx Java,Rx Java2,最近,我一直在研究RxJava 2,并测试了Observable.interval() subscription = Observable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io()).observeOn(AndroidSchedulers.mainThread()); subscription.subscribe(new Observer<Long>() { @Override

最近,我一直在研究RxJava 2,并测试了Observable.interval()

subscription = Observable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io()).observeOn(AndroidSchedulers.mainThread());

subscription.subscribe(new Observer<Long>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(Long aLong) {
                //binding.appBar.mainContent.msg.setText(aLong+"");
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });

您已经订阅了一个
观察者
,这意味着您必须从
onSubscribe(Disposable)
回调中保留一个对实际
可处置
的引用,然后在该对象上执行



    private Disposable disposable;

    ...

    Observable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(
            new Observer() {
              @Override public void onSubscribe(Disposable d) {
                disposable = d;
              }

            // other callbacks here

            });

    disposable.dispose();

相反,您可以将订阅更改为以下内容:



    Disposable disposable = Observable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Consumer() {
          @Override public void accept(Long aLong) throws Exception {
            // onNext
          }
        }, new Consumer() {
          @Override public void accept(Throwable throwable) throws Exception {
            // onError
          }
        }, new Action() {
          @Override public void run() throws Exception {
            // onComplete
          }
        });

    disposable.dispose();


错误:(77,33)错误:找不到symbol方法unsubscribe()错误:(77,33)错误:找不到symbol方法cancel()读取调用的方法的javadoc会有很大帮助。


    Disposable disposable = Observable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Consumer() {
          @Override public void accept(Long aLong) throws Exception {
            // onNext
          }
        }, new Consumer() {
          @Override public void accept(Throwable throwable) throws Exception {
            // onError
          }
        }, new Action() {
          @Override public void run() throws Exception {
            // onComplete
          }
        });

    disposable.dispose();