/*** 封装ProecssDialog对话框**/
public class LoadDialog extends ProgressDialog {private String title = "进度对话框";private String message = "载入数据中....";public LoadDialog(Context context, int theme) {super(context, theme);}/*** 用默认的标题和内容来创建对话框* @param context*/public LoadDialog(Context context) {super(context);initDialog();}/*** 用指定的标题和内容来创建对话框* @param context* @param title* @param message*/public LoadDialog(Context context,String title,String message){super(context);if(title != null){this.title = title;}if(message != null){this.message = message;}initDialog();}/*** 初始化对话框參数,默认对话框不能够取消*/public void initDialog(){setTitle(title);setMessage(message);setProgressStyle(ProgressDialog.STYLE_SPINNER);setCancelable(false);}/*** 打开对话框。设置回调方法,传递须要运行业务方法的类模板,方法名和參数列表* @param callback 回调方法,该方法在对话框关闭后回调,并获取返回的数据* @param serviceClass 运行业务方法的类模板* @param method 运行业务方法的方法名* @param params 运行业务方法的參数列表*/public void execute(Callback callback,Class serviceClass,String method,Object... params){super.show();ServiceAysnTask task = new ServiceAysnTask(callback,serviceClass,method);task.execute(params);}/*** 回调方法的接口**/public interface Callback{public void getResult(Map map);}/*** 与远程服务通信的线程类* @author BDK* AsyncTask 异步任务*/private class ServiceAysnTask extends AsyncTask<Object,Object,Map>{private Class serviceClass;private String method;private Callback callback;public ServiceAysnTask(Callback callback,Class serviceClass,String method){this.callback = callback;this.serviceClass = serviceClass;this.method = method;}@Overrideprotected Map doInBackground(Object... params) {Map resultMap = null;try {Object obj = serviceClass.newInstance();//创建类模板对象Class [] paramTypes = new Class[params.length];for (int i = 0; i < paramTypes.length; i++) {paramTypes[i] = params[i].getClass();}//依据类模板得到方法Method m = serviceClass.getMethod(method, paramTypes);resultMap = (Map) m.invoke(obj, params);} catch (Exception e) {e.printStackTrace();} LoadDialog.this.cancel();return resultMap;}@Overrideprotected void onPostExecute(Map result) {super.onPostExecute(result);if(result == null){Toast.makeText(LoadDialog.this.getContext(), "网络通信异常", Toast.LENGTH_LONG).show();return;}callback.getResult(result);}}
}
转载于:https://www.cnblogs.com/gcczhongduan/p/5232054.html