package com.laotan.easyreader.http.utils; import com.blankj.utilcode.utils.NetworkUtils; import com.blankj.utilcode.utils.ToastUtils; import com.laotan.easyreader.app.AppConstants; import com.laotan.easyreader.http.LifeSubscription; import com.laotan.easyreader.http.Stateful; import rx.Observable; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; /** * Created by quantan.liu on 2017/3/21. */ public class HttpUtils { public static <T> void invoke(LifeSubscription lifecycle, Observable<T> observable, Callback<T> callback) { Stateful target = null; if (lifecycle instanceof Stateful) { target = (Stateful) lifecycle; callback.setTarget(target); } /** * 先判断网络连接状态和网络是否可用,放在回调那里好呢,还是放这里每次请求都去判断下网络是否可用好呢? * 如果放在请求前面太耗时了,如果放回掉提示的速度慢,要10秒钟请求超时后才提示。 * 最后采取的方法是判断网络是否连接放在外面,网络是否可用放在回掉。 */ if (!NetworkUtils.isConnected()) { ToastUtils.showShortToast("网络连接已断开"); if (target != null) { target.setState(AppConstants.STATE_ERROR); } return; } Subscription subscription = observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(callback); lifecycle.bindSubscription(subscription); } }