ある程度時間が経過したらプログレスダイアログを表示する
最初からプログレスを表示せずにある程度時間が経ったらプログレスダイアログを表示します。
処理時間がまちまちな時に使えるんじゃないかなと思います。
onPostExecuteでプログレス非表示/メッセージキャンセルのif文がこんなので大丈夫か不安です。
初めてメッセージ使った。
AsyncTaskソース
処理が2秒以上掛かる場合はプログレスを表示します。
class WaitTask extends AsyncTask<Integer, Void, Integer> { /* プログレスが表示されるまでの閾値 */ private static final int PROGRESS_DELAY = 2000; /* Message識別*/ private final int MESSAGE_WHAT = 100; private Context context; private ProgressDialog progressDialog = null; private Handler handler; public WaitTask(Context context) { this.context = context; handler = new Handler() { @Override public void handleMessage(Message msg) { progressDialog = new ProgressDialog(WaitTask.this.context); progressDialog.setMessage("please wait"); progressDialog.show(); } }; } @Override protected Integer doInBackground(Integer... params) { Message msg = new Message(); msg.what = MESSAGE_WHAT; handler.sendMessageDelayed(msg, PROGRESS_DELAY); try { //何か時間が掛かる処理 Thread.sleep(params[0]); } catch (InterruptedException e) { Log.d("DelayedProgress", e.getMessage(), e); } return params[0]; } @Override protected void onPostExecute(Integer result) { if (progressDialog != null && progressDialog.isShowing()) { progressDialog.dismiss(); } else { handler.removeMessages(MESSAGE_WHAT); } Toast.makeText(context, String.format("%d second has passed", result), Toast.LENGTH_LONG).show(); } }