/**
* バックグラウンド処理の間にキャンセルできないプログレスダイアログを表示する
*/
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();
}
}
}
2014年4月27日日曜日
バックグラウンド処理の間プログレスダイアログを表示するAsyncTask
AsyncTaskのパラメタライズはそのままに、共通化したい前処理や後処理を実装するとこんな感じ。
0 件のコメント:
コメントを投稿