改造2 RxJaxa 1可观察:如何转换到RxJava 2
问题描述:
我是用在改造和Rx的Java 1这个代码从改造这样调用返回一个可观察:改造2 RxJaxa 1可观察:如何转换到RxJava 2
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) { }
})
);
我想不通如何将其转换为Java的RX 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() { }
});
答
您应该能够使用RxJava2适配器改造。这将允许您使您的Retrofit API返回RxJava2类型。
这里有一个坚实的例子:https://medium.com/3xplore/handling-api-calls-using-retrofit-2-and-rxjava-2-1871c891b6ae
答
我想出了这个,但我仍在测试...
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() { }
}));