AsyncDataLoader.java:
/** * 异步加载后台数据 * @author gongchaobin * * @version 2011-12-19 */ public class AsyncDataLoader extends AsyncTask<Object, Void, Object> { private Dialog loadingDialog; private Context mContext; private List<Object> paramsList = null; private String urlFlag; private int type; public final static int MESSAGECODE = 0;//信息编码 public final static int EXCEPTION = 1; private boolean showWaitingFlag = false;//是否显示Loading private String showMessage = "加载中...";//loading显示的文本 private Message msg = new Message(); public static final String GET_AD_INFO = "get_ad_info"; /** * @param params[0] Context 上下文 * @param params[1] urlFlag URL标识 * @param params[2] paramsList 方法参数 * @param params[3] type 类型 */ @SuppressWarnings("unchecked") @Override protected Object doInBackground(Object... params) { if(params!=null){ mContext = (Context) params[0];//取得上下文 if(params.length>=2){ urlFlag = (String) params[1];// 取得接口标识 } if (params.length>=3) { paramsList = (List<Object>) params[2];// 取得参数 } if(params.length>=4){ type = Integer.parseInt(params[3].toString());//取得标识类型 } } publishProgress();// 调用onProgressUpdate() Object result = null; try { if(urlFlag.equals(GET_AD_INFO)){ result = DataCommple.getInstance().adRequest(); } //接口方法的调用 } catch (Exception e) { e.printStackTrace(); msg.what = EXCEPTION; msg.obj = e; } return result; } /** * @param result 远端获取到的数据 * @return */ @Override protected void onPostExecute(Object result) { try { if (showWaitingFlag && loadingDialog != null&&loadingDialog.isShowing()) { loadingDialog.dismiss(); } if (callBack != null) { callBack.handleData(msg, result, type); } } catch (Exception ex) { ex.printStackTrace(); } } @Override protected void onCancelled() { super.onCancelled(); } @Override protected void onProgressUpdate(Void... values) { if (showWaitingFlag) { if (mContext != null) { loadingDialog =getDialog((Activity) mContext, this.showMessage); loadingDialog.show(); } } } /** *回调对象 */ private ICallBackData callBack = null; /** *设置回调对象 */ public void setCallBack(ICallBackData cb) { this.callBack = cb; } /** * 获取数据回调接口 */ public interface ICallBackData { void handleData(Message msg, Object result, int type); } /** * 创建loading对话框 * @param act * @param message * @return */ private ProgressDialog getDialog(Activity act,String message){ ProgressDialog dialog = new ProgressDialog(act); dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); dialog.setMessage(message); return dialog; } public boolean isShowWaitingFlag() { return showWaitingFlag; } public void setShowWaitingFlag(boolean showWaitingFlag) { this.showWaitingFlag = showWaitingFlag; } public String getShowMessage() { return showMessage; } public void setShowMessage(String showMessage) { this.showMessage = showMessage; } }