App的首页一般都比较复杂,好多公司传递数据都是3-4个接口将数据传递回来,这是我们可能就需要使用的多个请求合并成一个请求。最后再去更UI 。在这里就需要用到Rxjava的操作符merge
具体如下:
showLoading();
Observable<TimerBean> time = RetrofitClient.getHomeApi().getTime("getServerTime");
Observable<GoodsDetailBean> goodsDetail = RetrofitClient.getHomeApi().getGoodsDetail( products_id);
Observable.merge(time,goodsDetail) // 这里将 要请求的接口信息 放进来 可以放多个
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) //observeOn 使其在UI线程
.subscribe(new Subscriber<Object>() {
@Override
public void onCompleted() {
dismissLoading();
}
@Override
public void onError(Throwable e) {
dismissLoading();
}
@Override
public void onNext(Object obj) {
if (obj instanceof TimerBean){
TimerBean time = (TimerBean)obj;
// 获取到一个请求的数据
}else if (obj instanceof GoodsDetailBean){
GoodsDetailBean goodsDetailBean = (GoodsDetailBean)obj;
// 获取到第二个请求的数据
}
}
// 最后更新UI
});