1.关于map和flatMap
此时 如果用map
getDetailAddressList(assigned)
.subscribeOn(Schedulers.newThread())
.map(new Func1<BaseResponse<List<UserAddressEntity>>, Observable<UserAddressEntity>>() {
@Override
public Observable<UserAddressEntity> call(BaseResponse<List<UserAddressEntity>> response) {
return Observable.from(response.data);
}
})
.subscribe(new BaseSubscriber<Observable<UserAddressEntity>>() {
@Override
public void onStart() {
super.onStart();
}
})
此时的subscribe中 仍是 Observable<UserAddressEntity>
.flatMap(new Func1<BaseResponse<List<UserAddressEntity>>, Observable<UserAddressEntity>>() {
@Override
public Observable<UserAddressEntity> call(BaseResponse<List<UserAddressEntity>> listBaseResponse) {
return Observable.from(listBaseResponse.data);
}
})
.subscribe(new BaseSubscriber<UserAddressEntity>() {
@Override
public void onNext(UserAddressEntity address) {
address.setUid(TribeApplication.getInstance().getUserInfo().getId());
address.setArea(address.getProvice(), address.getCity(), address.getDistrict());
dao.saveBindingId(address);
}
});
如果是 flatMap 则返回 BaseSubscriber<UserAddressEntity>
-RxJava 实现倒计时:
private Subscriber<Long> subscriber;
final int startTime = 60;
reg_send.setClickable(false);
subscriber = new Subscriber<Long>() {
@Override
public void onCompleted() {
reg_send.setText("获取验证码");
reg_send.setClickable(true);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Long aLong) {
reg_send.setText(aLong + "秒");
}
};
Observable.interval(0,1, TimeUnit.SECONDS).take(startTime+1)
.map(new Func1<Long, Long>() {
@Override
public Long call(Long time) {
return startTime-time;
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(subscriber);