Rxjava 真是的是好东西 随手记录下用过的链式调度 方便使用的时候直接修改
Observable.create(new ObservableOnSubscribe<String>() { @Override public void subscribe(ObservableEmitter<String> e) throws Exception { e.onNext(login()); Log.e(TAG, "subscribe login:" + Thread.currentThread().getName()); } }).map(new Function<String, String>() { @Override public String apply(String s) throws Exception { Log.e(TAG, "194 apply:" + Thread.currentThread().getName()); return "apply"; } }).map(new Function<String, String>() { @Override public String apply(String s) throws Exception { Log.e(TAG, "194 apply:" + Thread.currentThread().getName()); return "apply"; } }).doOnNext(new Consumer<String>() { //保存登录结果UserInfo @Override public void accept(@NonNull String bean) throws Exception { Log.e(TAG, "1doOnNext:accept" + Thread.currentThread().getName()); saveUserInfo(bean); } }) .subscribeOn(Schedulers.io()) //调度线程 .observeOn(AndroidSchedulers.mainThread()) //调度线程 .subscribe(new Consumer<String>() { @Override public void accept(@NonNull String bean) throws Exception { //整个请求成功,根据获取的UserInfo更新对应的View showSuccessView(bean); Log.e(TAG, "Consumer:accept" + Thread.currentThread().getName()); } }, new Consumer<Throwable>() { @Override public void accept(@NonNull Throwable throwable) throws Exception { //请求失败,显示对应的View Log.e(TAG, "222 Consumer:" + Thread.currentThread().getName()); showFailView(); } });