package com.ly.supermvp.model.weather; import com.ly.supermvp.model.OnNetRequestListener; import com.ly.supermvp.server.RetrofitService; import com.ly.supermvp.model.entity.ShowApiResponse; import rx.Observable; import rx.Subscriber; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action0; import rx.schedulers.Schedulers; /** * <Pre> * 天气预报实现类 * </Pre> * * @author 刘阳 * @version 1.0 * <p/> * Create by 2016/3/1 14:48 */ public class WeatherModelImpl implements WeatherModel { @Override public void netLoadWeatherWithLocation(String area, String needMoreDay, String needIndex, String needAlarm, String need3HourForcast, final OnNetRequestListener listener) { //使用RxJava响应Retrofit Observable<ShowApiResponse<ShowApiWeather>> observable = RetrofitService.getInstance(). createBaiduAPI().getWeather(RetrofitService.getCacheControl(), area, needMoreDay, needIndex, needAlarm, need3HourForcast); observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .doOnSubscribe(new Action0() { @Override public void call() { listener.onStart(); } }) .subscribe(new Subscriber<ShowApiResponse<ShowApiWeather>>() { @Override public void onCompleted() { //仅成功后会回调 listener.onFinish(); } @Override public void onError(Throwable e) { listener.onFailure(e); listener.onFinish(); } @Override public void onNext(ShowApiResponse<ShowApiWeather> showApiWeatherShowApiResponse) { if(showApiWeatherShowApiResponse.showapi_res_body.now == null){ listener.onFailure(new Exception(showApiWeatherShowApiResponse.showapi_res_code)); }else { listener.onSuccess(showApiWeatherShowApiResponse.showapi_res_body); } } }); } }