package com.xjerp.xjtech.nohttp; import android.app.Activity; import android.content.Context; import com.yanzhenjie.nohttp.NoHttp; import com.yanzhenjie.nohttp.download.DownloadListener; import com.yanzhenjie.nohttp.download.DownloadQueue; import com.yanzhenjie.nohttp.download.DownloadRequest; import com.yanzhenjie.nohttp.rest.OnResponseListener; import com.yanzhenjie.nohttp.rest.Request; import com.yanzhenjie.nohttp.rest.RequestQueue; /** * Created by ${zpz} on 2018/3/29. */ public class CallSever { private static CallSever sCallSever; /** * 通过雷鸣调用,获取CallServer对象 */ public synchronized static CallSever getRequestInstance() { if (sCallSever == null) { sCallSever = new CallSever(); } return sCallSever; } /** * 创建一个Nohttp请求队列的对象 */ private RequestQueue mRequestQueue; private CallSever() { mRequestQueue = NoHttp.newRequestQueue(5); mDownloadQueue = NoHttp.newDownloadQueue(3); } /** * @param context 上下文 用来实例化我们自定义的对话框 * @param what 标识,用来标志请求,当多个请求使用同一个 * @param callback 网络请求的监听器 * @param canCancle 是否允许用户取消请求 * @param isLoading 是否显示进度条对话框 * @param request 请求对象 */ public <T> void add(Context context, int what, Request<T> request, HttpListener<T> callback, boolean canCancle, boolean isLoading) { mRequestQueue.add(what, request, new HttpResponseListener<T>(context, request, callback, canCancle, isLoading)); } /** * 取消这个sign标记的所有请求 */ public void cancelBySign(Object sign) { mRequestQueue.cancelBySign(sign); } /** * 取消队列中所有请求 */ public void cancelAll() { mRequestQueue.cancelAll(); } /** * 退出app时停止所有请求 */ public void stopAll() { mRequestQueue.stop(); } private DownloadQueue mDownloadQueue; public <T> void request(int what, Request<T> request, OnResponseListener<T> listener) { mRequestQueue.add(what, request, listener); } public <T> void request(Activity activity, int what, Request<T> request, HttpListener<T> callback, boolean canCancel, boolean isLoading) { mRequestQueue.add(what, request, new HttpResponseListener<>(activity, request, callback, canCancel, isLoading)); } public void download(int what, DownloadRequest request, DownloadListener listener) { mDownloadQueue.add(what, request, listener); } }