我是反应式编程(RxJava和RxAndroid)的新手。我想使用RxView.clicks()而不是单击侦听器。我把一个按钮放到main层,然后在onCreate方法的Main activity中使用Button,我写下了这个语句:
**//onCreate**
ButterKnife.bind(this);
RxView.clicks(btn_range)
.switchMap(new Function<Object, Observable<Integer>>() {
@Override
public Observable<Integer> apply(Object o) throws Exception {
return Observable.range(1,10);
}
})
.subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
d.dispose();
}
@Override
public void onNext(Integer integer) {
Toast.makeText(MainActivity.this, integer+"", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable e) {
Toast.makeText(MainActivity.this, e.getMessage()+"", Toast.LENGTH_SHORT).show();
}
@Override
public void onComplete() {
}
});但是当我运行它的时候,没有出现吐司。
我已经将单击侦听器转换为可观察对象,然后将可观察对象更改为一个整数范围,最后显示它。
发布于 2018-01-16 17:20:24
在您的.subscribe()中,一旦订阅,Observer<Integer>就会调用d.dispose()。
所以如果你的链被释放了,那么它就不再起作用了。当您不再需要该流时,应该释放该Disposable。
您可以将发出的Disposable存储在与订阅它的位置相反的生命周期事件回调中。
https://stackoverflow.com/questions/48277591
复制相似问题