android - Android rxjava 改造链调用不起作用
问题描述
项目清单
我对 RXJava 非常陌生,我使用改造通过 android 中的 Rxjava flatmaps 调用制作 api。我的身份验证活动分为三个部分
- 第一部分调用登录。
- 成功登录后,如果他是现有用户,则获取用户以前的详细信息。
- 然后将 firebase fcm 令牌更新到数据库。
但是这里只有第一个平面图只执行了剩余的平面图没有执行
这是我的代码
Auth auth = new Auth();
auth.setEmail(email);
auth.setPassword(password);
authUser.createUser(auth)
.flatMap( response -> {
//Only this block is executed
Log.d("FlatMap1", String.valueOf(response.code()));
if(response.code() == 200) {
String token = response.body().getToken();
editor.putString("token", token);
editor.apply();
UserId getUser = new UserId();
getUser.setUid(firebaseAuth.getUid());
return userInfo.CurrentUser("barer " + sharedPreferences.getString("token", null), getUser);
}else return null;
})
.flatMap( response -> {
if(!isNew){
Log.d("FlatMap1", String.valueOf(response.code()));
if(response.code() == 200) {
UserInfo userInfo = response.body.UserInfo();
}else return null;
}else{
UpdateFCM updateFCM = new UpdateFCM();
updateFCM.setToken(fcmToken);
return updateFcmToken.update("barer
"+sharedPreferences.getString("token",null),updateFCM);
}
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.unsubscribeOn(Schedulers.io())
.subscribe(new Observer<Response<Void>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Response<Void> voidResponse) {
Log.d("FlatMap3",String.valueOf(voidResponse.code()));
if(voidResponse.code() == 200){
Toast.makeText(getApplicationContext(),"Login success",Toast.LENGTH_SHORT).show();
finish();
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
那么出了什么问题,不要重复投票和否决;
解决方案
不允许在 RxJava2 的运算符链中返回空值。由于您要返回null,因此整体突然中断,并且不会将新元素推送到流中。
阅读此内容以供参考 - RxJava 2.0 不支持 Null 值
推荐阅读
- python - 在 Maya 中查看正在进行的 Alembic 缓存
- python-3.x - 自定义对象级 DRF 权限不起作用
- ionic-framework - Ionic Progressive Web App 捕获的图像被镜像
- android - 在 RecyclerView 中使用 marquee TextView 将在刷新后停止滚动
- python - Firebase Firestore 服务器时间戳与 Python 日期时间?
- python - 在 Python 3 中确定 max_workers 用于多处理的最佳值的好方法是什么?
- r - 合并两个数据框会创建新的缺失观测值
- javascript - 当我通过 id 获取元素时如何转义特殊字符
- datatables - 如何对 JQuery DataTable 的每列应用过滤器?
- java - Firebase OnSuccessListener 被调用但数据未更新