Android 从循环中观察到的停止
最近,我一直在研究RxJava 2,并测试了Observable.interval()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
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();