我的應用程序上有一個按鈕,如果用戶點擊它,它將通過調用onResume()來刷新當前頁面,並且onResume()中有很多數據庫操作。而不是保持按鈕保持按下一段時間,我想在加載數據時使用asynctask來創建progressdialog。但問題是按鈕仍然處於按下狀態,進度對話框僅在操作結束時顯示很短的時間。如何使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爲假之後。但進度對話框工作不正常。請幫我:(
感謝您的時間,發生什麼事,如果我不想將我的代碼了我的onResume()方法? – user1701840
我認爲它應該仍然有效,但它只是一個奇怪的地方。因爲讓我們說你轉到下一個活動,然後點擊返回。它將調用onResume()函數,從而再次執行'... loading ...'和AsyncTask函數。 – dispake
我想我執行asynctask之前..... loading ....代碼 因爲我需要更新用戶界面(用戶界面包含一些圖形和信息)用戶從其他活動回來的一切,所以我把所有那些在onResume裏面的代碼,如果我需要將這些代碼移動到私有的asynctask類中,這將是一件令人頭痛的事情... – user1701840