读书人

异步加载进度展示

发布时间: 2012-09-23 10:28:11 作者: rapoo

异步加载进度显示

package com.rcsit.android.mas.email.dialog;import android.app.Activity;import android.app.ProgressDialog;import android.content.DialogInterface;import android.content.DialogInterface.OnCancelListener;import android.os.AsyncTask;import android.widget.Toast;/** * 异步加载类 * * @author wanglin(lin3.wang@changhong.com) * 2011-5-20下午04:01:02 */public abstract class LoadingDialog<Input, Result> extends  AsyncTask<Input, WSError, Result> { private ProgressDialog mProgressDialog; protected Activity mActivity; private int mLoadingMsg; private int mFailMsg; private boolean mEnddismiss = true;   public LoadingDialog(Activity activity, int loadingMsg, int failMsg) {  this.mActivity = activity;  this.mLoadingMsg = loadingMsg;  this.mFailMsg = failMsg; } public LoadingDialog(Activity activity, int loadingMsg, int failMsg,   boolean Enddismiss) {  this.mActivity = activity;  this.mLoadingMsg = loadingMsg;  this.mFailMsg = failMsg;  this.mEnddismiss = Enddismiss; } /**  * 用户调用取消时,要做的操作  */ @Override public void onCancelled() {  failMsg();  super.onCancelled(); } @Override public void onPreExecute() {  String title = "";  String message = mActivity.getString(mLoadingMsg);  mProgressDialog = ProgressDialog.show(mActivity, title, message, true,    true, new OnCancelListener() {     public void onCancel(DialogInterface dialogInterface) {      LoadingDialog.this.cancel(true);     }    });  super.onPreExecute(); } /**  * 后台执行,比较耗时的操作都可以放在这里。注意这里不能直接操作UI。  */ @Override public abstract Result doInBackground(Input... params); /**  * 相当于Handler 处理UI的方式  */ @Override public void onPostExecute(Result result) {  super.onPostExecute(result);  if (!this.mEnddismiss)   mProgressDialog.dismiss();  if (result != null) {   doStuffWithResult(result);  } else {   failMsg();  }  if (this.mEnddismiss)   mProgressDialog.dismiss(); } protected void failMsg() {  Toast.makeText(mActivity, mFailMsg, 2000).show(); } /**  * Very abstract function hopefully very meaningful name, executed when  * result is other than null  *   * @param result  * @return  */ public abstract void doStuffWithResult(Result result); /**  * 使用进度条增加用户体验度  */ @Override protected void onProgressUpdate(WSError... values) {  Toast.makeText(mActivity, values[0].getMessage(), Toast.LENGTH_LONG)    .show();  this.cancel(true);  mProgressDialog.dismiss();  super.onProgressUpdate(values); }}

?

读书人网 >移动开发

热点推荐