Q: 实现定时相服务器查询数据。
mCompositeSubscription.add(
Observable
.interval(10,TimeUnit.SECONDS)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(new Func1>() {
@Override
public Observable call(Long aLong) {
mView.showProgress();
return mModel.getSvgRTData().subscribeOn(Schedulers.io());
}
})
.map(new Func1() {
@Override
public String call(SvgDataBean svgDataBean) {
//处理数据返回json的字符串
String jsCode = "";
String lastTime = MyUtils.simpleDateFormatFullTime.format(svgDataBean.getData().get(0).getLastTime());
String jsonData = new Gson().toJson(svgDataBean);
jsCode = ....;
return jsCode;
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
mView.hideProgress();
}
@Override
public void onNext(String s) {
mView.hideProgress();
mView.setSvgRtData(s);
}
}
)
);
A: 1. 首先创建在新线程创建一个定时的发射者,每10s发送一次数据,这里设置了主线程,用于显示loading。 2. 然后接收Observevable对象处理数据。