package com.lzy.okhttpdemo.callback; import android.app.Activity; import android.app.ProgressDialog; import android.support.annotation.Nullable; import android.view.Window; import com.lzy.okhttputils.request.BaseRequest; import java.lang.reflect.Type; import okhttp3.Call; import okhttp3.Response; /** * ================================================ * 作 者:廖子尧 * 版 本:1.0 * 创建日期:2016/1/14 * 描 述:对于网络请求是否需要弹出进度对话框 * 修订历史: * ================================================ */ public abstract class DialogCallback<T> extends JsonCallback<T> { private ProgressDialog dialog; private void initDialog(Activity activity) { dialog = new ProgressDialog(activity); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setCanceledOnTouchOutside(false); dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); dialog.setMessage("请求网络中..."); } public DialogCallback(Activity activity, Class<T> clazz) { super(clazz); initDialog(activity); } public DialogCallback(Activity activity, Type type) { super(type); initDialog(activity); } @Override public void onBefore(BaseRequest request) { super.onBefore(request); //网络请求前显示对话框 if (dialog != null && !dialog.isShowing()) { dialog.show(); } } @Override public void onAfter(boolean isFromCache, @Nullable T t, Call call, @Nullable Response response, @Nullable Exception e) { super.onAfter(isFromCache, t, call, response, e); //网络请求结束后关闭对话框 if (dialog != null && dialog.isShowing()) { dialog.dismiss(); } } }