【发布时间】:2017-06-08 10:38:40
【问题描述】:
我在 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();
}
}
基本上,我正在尝试创建一个方法,该方法将接受观察者/消费者作为参数,并在改造完成后使用它来更新 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:
由于 Reactive-Streams 基接口,org.reactivestreams.Publisher 将 subscribe() 方法定义为 void,Flowable.subscribe(Subscriber) 不再返回任何 Subscription(或 Disposable)。其他基本反应类型也遵循此签名及其各自的订阅者类型。
那么如何保存一次性用品以便我们可以退订呢?
【问题讨论】:
-
我建议您阅读整个 wiki 页面,因为答案在您引用的上述部分中给出:github.com/ReactiveX/RxJava/wiki/…
-
优秀。你的权利
标签: rx-java2