アプリにボタンがあり、ユーザーがクリックすると、onResume() を呼び出して現在のページが更新され、onResume() には多くのデータベース操作があります。ボタンをしばらく押したままにする代わりに、asynctask を使用して、データの読み込み中に進行状況ダイアログを作成したいと思います。しかし問題は、ボタンがまだ押された状態のままであり、進行状況ダイアログが操作の最後に非常に短い時間しか表示されないことです。
RefreshButton.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
onResume();
}
});
protected void onResume()
{
doneloading = false;
monResumeloading = new onResumeloading();
monResumeloading.execute();
....loading...
doneloading = true;
}
private class onResumeloading extends AsyncTask<Integer, Integer, String>
{
private ProgressDialog progressDialog;
@Override
protected void onPostExecute(String result)
{
progressDialog.dismiss();
}
@Override
protected void onPreExecute()
{
progressDialog = new ProgressDialog(StatisticsActivity.this);
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(true);
progressDialog.show();
Log.i(TAG, " doneloading=false");
}
@Override
protected void onProgressUpdate(Integer... values)
{
}
@Override
protected String doInBackground(Integer... params)
{
while(!doneloading)
{
publishProgress(0); //dummy
log.i(TAG, "loading");
}
return null;
}
}
asynctask の実行直後に「読み込み中」のログが表示され、ブール値の doneloading が false になった直後に停止することがわかりました。しかし、進行状況ダイアログが正しく機能していません。私を助けてください :(