rxjava2 - 如何将消费者作为参数传递

时间:2017-06-08 10:38:40

标签: rx-java2

我在android中使用以下rxjava依赖项:

import

我正在尝试创建一个将观察者作为参数的方法。我有一些问题,我认为它是因为这是rxjava2所以事情是更新的,我有点困惑。

让我告诉你我想要完成的事情:

 compile 'io.reactivex.rxjava2:rxjava:2.1.0'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'

基本上我正在尝试创建一个接受观察者/消费者作为参数的方法,并在改造完成后使用它来更新UI(作为可观察的)。

更新: 好吧,我把它改成一次性用品。现在我想存放我回来的一次性用品,但它不起作用。

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();
    }
}

我收到以下警告:

enter image description here

我想将整个事物存储在订阅中(或者您推荐的任何其他内容)的原因是我可以随时取消订阅它。

但来自docs

  

因为Reactive-Streams基接口,org.reactivestreams.Publisher将subscribe()方法定义为void,所以Flowable.subscribe(Subscriber)不再返回任何Subscription(或Disposable)。其他基本反应类型也遵循此签名及其各自的订户类型。

那么如何保存一次性以便我们可以取消订阅呢?

1 个答案:

答案 0 :(得分:2)

Subscription已重新命名为'使用2.x版本到Disposable。您可以阅读有关此更改的{rxJava wiki说明here

那么如何保存一次性所以我们可以取消订阅呢? Flowable.subscribe(Subscriber)不会返还一次性用户,但Observable.subscribe(Subscriber)会回复。如果您不需要背压,只需将Flowable投放到Observable .toObservable()