【问题标题】:Retrofit 2 Observable in RxJaxa 1: How to convert to RxJava 2RxJaxa 1 中的 Retrofit 2 Observable:如何转换为 RxJava 2
【发布时间】:2017-04-04 16:37:36
【问题描述】:

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

【问题讨论】:

    标签: java android retrofit2 rx-java2


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2020-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-13
        相关资源
        最近更新 更多