我的应用程序上有一个按钮,如果用户点击它,它将通过调用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 后立即停止。但是进度对话框无法正常工作。请帮我 :(