RxAndroid:是否有一种从Observable获取Subscriber对象的简洁方法?

时间:2016-12-02 15:16:43

标签: android observable subscription rx-android

所以从我的视图模型中,我在另一个类中调用我的Observable:

 getAuthentication.kickoff()
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Subscriber<RxOkHttpResponse>() {
                @Override
                public final void onCompleted(  ) {
                    getAlbums();
                }

                @Override
                public final void onError(Throwable e) {
                    userMsgHandler.showToast(mParent,mParent.getString(R.string.error_cannot_authenticate));
                }

                @Override
                public final void onNext(RxOkHttpResponse response) {

                    mSubscription = response.subscription;

                }
            }); 

所以这个调用显然会返回一个Observable。所以我想知道什么是最简单的方法来调用此Observable上的subscriber.unsubscribe()返回或者是否有方法(现在我将它返回onNext - 但我不高兴那个)

那么有没有办法格式化代码以在成员变量中存储.subscribe():

.observeOn(AndroidSchedulers.mainThread())
            mSubscriber = .subscribe(new Subscriber<RxOkHttpResponse>() {

...

我正在使用v 1.1.0

2 个答案:

答案 0 :(得分:2)

答案取决于您是使用RxJava 1还是2.如果是RxJava 1 subscribe()将返回Subscription实例,然后您可以调用unsubscribe()。但是对于RxJava 2,我认为您需要添加onSubscribe()

答案 1 :(得分:0)

这是我正在寻找的语法:

mSubscriber = ( getAuthentication.kickoff()
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
        ).subscribe(new Subscriber<RxOkHttpResponse>() {

          ...

现在我可以轻松地将mSubscriber存储在我的视图模型中,以便在我的Activity中使用OnDestroy()触发清理