rxjava2 - 如何将消费者作为参数传递
rxjava2 - how to pass in a consumer as parameter
我在 android 中使用以下 rxjava 依赖项:
compile 'io.reactivex.rxjava2:rxjava:2.1.0'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
我正在尝试创建一个将观察者作为参数的方法。我遇到了一些问题,我认为是因为这是 rxjava2,所以事情已经更新,我有点困惑。
让我告诉你我想要完成的事情:
private Subscription subscription = Scriptions.empty(); //this isn't working. how to set a empty observer IN RXJAVA2?
protected abstract Observable buildUseCaseObservable(); //RETROFIT WILL BUILD THE OBSERVABLE FOR ME SOMEWHERE ELSE
public void execute(Consumer UseCaseSubscriber){
this.subscription = this.buildUseCaseObservable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(UseCaseSubscriber); //THIS LINE IS NOT WORKING , ERROR IS IN THE PHOTO
}
public void unsubscribe(){
if(!subscription.isUnsubscribed()){
subscription.unsubscribe();
}
}
基本上我正在尝试创建一种方法,该方法将接受 observer/consumer 作为参数,并在改造完成后使用它来更新 UI(可观察)。
更新:
好的,我把它改成了一次性用品。现在我想存放我拿回来的一次性用品,但它不起作用。
protected abstract Observable buildUseCaseObservable();
@SuppressWarnings("unchecked")
public void execute(Observer UseCaseSubscriber){
this.subscription = this.buildUseCaseObservable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(UseCaseSubscriber);
}
public void unsubscribe(){
if(!subscription.isUnsubscribed()){
subscription.unsubscribe();
}
}
我收到以下警告:
我想将整个内容存储在订阅(或您推荐的任何其他内容)中的原因是这样我可以随时取消订阅。
但来自 docs:
Because Reactive-Streams base interface, org.reactivestreams.Publisher defines the subscribe() method as void, Flowable.subscribe(Subscriber) no longer returns any Subscription (or Disposable). The other base reactive types also follow this signature with their respective subscriber types.
那么如何保存一次性的以便我们可以退订呢?
Subscription
已经 'renamed' 到 Disposable
和 2.x 版本。您可以阅读有关此更改的 rxJava wiki 解释 here。
那么如何保存一次性的以便我们可以退订呢? Flowable.subscribe(Subscriber)
不是 return 一次性的,但是 Observable.subscribe(Subscriber)
可以。如果您不需要背压,只需将 Flowable
转换为 Observable
和 .toObservable()
。
我在 android 中使用以下 rxjava 依赖项:
compile 'io.reactivex.rxjava2:rxjava:2.1.0'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
我正在尝试创建一个将观察者作为参数的方法。我遇到了一些问题,我认为是因为这是 rxjava2,所以事情已经更新,我有点困惑。
让我告诉你我想要完成的事情:
private Subscription subscription = Scriptions.empty(); //this isn't working. how to set a empty observer IN RXJAVA2?
protected abstract Observable buildUseCaseObservable(); //RETROFIT WILL BUILD THE OBSERVABLE FOR ME SOMEWHERE ELSE
public void execute(Consumer UseCaseSubscriber){
this.subscription = this.buildUseCaseObservable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(UseCaseSubscriber); //THIS LINE IS NOT WORKING , ERROR IS IN THE PHOTO
}
public void unsubscribe(){
if(!subscription.isUnsubscribed()){
subscription.unsubscribe();
}
}
基本上我正在尝试创建一种方法,该方法将接受 observer/consumer 作为参数,并在改造完成后使用它来更新 UI(可观察)。
更新: 好的,我把它改成了一次性用品。现在我想存放我拿回来的一次性用品,但它不起作用。
protected abstract Observable buildUseCaseObservable();
@SuppressWarnings("unchecked")
public void execute(Observer UseCaseSubscriber){
this.subscription = this.buildUseCaseObservable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(UseCaseSubscriber);
}
public void unsubscribe(){
if(!subscription.isUnsubscribed()){
subscription.unsubscribe();
}
}
我收到以下警告:
我想将整个内容存储在订阅(或您推荐的任何其他内容)中的原因是这样我可以随时取消订阅。
但来自 docs:
Because Reactive-Streams base interface, org.reactivestreams.Publisher defines the subscribe() method as void, Flowable.subscribe(Subscriber) no longer returns any Subscription (or Disposable). The other base reactive types also follow this signature with their respective subscriber types.
那么如何保存一次性的以便我们可以退订呢?
Subscription
已经 'renamed' 到 Disposable
和 2.x 版本。您可以阅读有关此更改的 rxJava wiki 解释 here。
那么如何保存一次性的以便我们可以退订呢? Flowable.subscribe(Subscriber)
不是 return 一次性的,但是 Observable.subscribe(Subscriber)
可以。如果您不需要背压,只需将 Flowable
转换为 Observable
和 .toObservable()
。