在RxJaxa中改造2 Observable 1:如何转换为RxJava 2

时间:2017-04-04 16:37:36

标签: java android retrofit2 rx-java2

我在Retrofit和Rx Java 1中使用此代码从这样的Retrofit调用中返回一个observable:

mCompositeSubscription.add(
               ServiceFactory.createRetrofitService().setLike(mediaId,sessionMgr.getAuthToken())
                        .subscribeOn(Schedulers.newThread())
                        .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Subscriber<ResponseBody>() {
                    @Override
                    public final void onCompleted(  ) {}

                    @Override
                    public final void onError(Throwable e) {

                        userMessageHandler.showDialog(mParentActivity,mParentActivity.getString(R.string.error_setting_data_title),
                                mParentActivity.getString(R.string.error_set_like_msg) + e.getMessage(),0);
                    }

                    @Override
                    public void onNext(ResponseBody response) { }
                })
            );

我无法弄清楚如何将其转换为RX Java 2.我已经想出了这个但不确定它是对的:

          .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new DisposableObserver<User>(){
                    @Override
                    public void onNext(User user) {
                        authMgr.setUser(user);
                    }
                    @Override
                    public void onError(Throwable t) {
                        mProgressDlg.dismiss();
                        alertDlg.showIt(mResources.getString(R.string.err_register),
                                t.getMessage(), "",
                                "", mParentActivity, JAlertDialog.POSITIVE,null);
                    }
                    @Override
                    public void onComplete() { }
                });

2 个答案:

答案 0 :(得分:0)

您应该能够在改造中使用RxJava2适配器。这将允许您使用Retrofit API返回RxJava2类型。

以下是一个可靠的示例:https://medium.com/3xplore/handling-api-calls-using-retrofit-2-and-rxjava-2-1871c891b6ae

答案 1 :(得分:0)

我想出了这个,但我还在测试.​​..

 mCompositeDisposable.add( ServiceFactory.createRetrofitService().registerNewUser(BuildConfig.CLIENT_KEY, data.email,
                        data.fname, data.lname, data.birthday,data.city,
                        data.state, mAvatarUrl, coords, Long.toString(mSessionId) ,
                        data.pwd, layerMgr.getNonce() )
                        .subscribeOn(Schedulers.newThread())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribeWith(new DisposableObserver<User>(){
                            @Override
                            public void onNext(User user) {

                            }
                            @Override
                            public void onError(Throwable t) {
                                mProgressDlg.dismiss();
                                alertDlg.showIt(mResources.getString(R.string.err_register),
                                        t.getMessage(), "",
                                        "", mParentActivity, JAlertDialog.POSITIVE,null);
                            }
                            @Override
                            public void onComplete() { }
                        }));