2014年4月27日日曜日

バックグラウンド処理の間プログレスダイアログを表示するAsyncTask

AsyncTaskのパラメタライズはそのままに、共通化したい前処理や後処理を実装するとこんな感じ。

/** * バックグラウンド処理の間にキャンセルできないプログレスダイアログを表示する */ public abstract class ModalProgressTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> { private final WeakReference<ProgressDialog> mProgressRef; public ModalProgressTask(Context context, String message) { ProgressDialog dialog = new ProgressDialog(context); dialog.setMessage(message); dialog.setCancelable(false); mProgressRef = new WeakReference<ProgressDialog>(dialog); } @Override protected void onPreExecute() { super.onPreExecute(); ProgressDialog dialog = mProgressRef.get(); if (dialog != null && !dialog.isShowing()) { dialog.show(); } } @Override protected void onPostExecute(Result result) { super.onPostExecute(result); ProgressDialog dialog = mProgressRef.get(); if (dialog != null && dialog.isShowing()) { dialog.dismiss(); } } @Override protected void onCancelled() { super.onCancelled(); ProgressDialog dialog = mProgressRef.get(); if (dialog != null && dialog.isShowing()) { dialog.dismiss(); } } }


0 件のコメント:

コメントを投稿