Q: 實現定時相服務器查詢數據。java
mCompositeSubscription.add( Observable .interval(10,TimeUnit.SECONDS) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .flatMap(new Func1<Long, Observable<SvgDataBean>>() { @Override public Observable<SvgDataBean> call(Long aLong) { mView.showProgress(); return mModel.getSvgRTData().subscribeOn(Schedulers.io()); } }) .map(new Func1<SvgDataBean, String>() { @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<String>() { @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對象處理數據。json