雖然我正在更新我的數據庫,但我想要顯示一個進度對話框。我的問題是ProgressDialog遲遲不出現,4-5秒後出現並消失得非常快,它在屏幕上停留幾毫秒,幾乎看不到它,然後立即在列表中顯示新數據。這使我認爲ProgressDialog正在等待數據庫被更新(它不需要太多時間,大約4,5秒),然後它顯示在屏幕上,但速度非常快。我希望ProgressDialog立即出現,我按下'更新'按鈕並保持4-5秒的屏幕。ProgressDialog出現得太晚,消散得太快
class MyAsyncTask extends AsyncTask<Void, Void, Void>{
ProgressDialog myprogsdial;
@Override
protected void onPreExecute(){
myprogsdial = ProgressDialog.show(MyActivity.this, null, "Upgrade", true);
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
RefreshDataBase();
}
});
return null;
}
@Override
protected void onPostExecute(Void result){
myprogsdial.dismiss();
}
}
當我打電話吧,new MyAsyncTask().execute();
好像你不知道你在做什麼...爲什麼你在'doInBackground'中使用'runOnUiThread'? ...現在你的代碼流是這樣的:我開始新的線程(AsyncTask)在UI線程上運行作業(runOnUiThread) – Selvin 2012-01-11 17:06:50
在調用新的MyAsyncTask之前執行ProgressDialog.show(...)調用時會發生什麼).execute(),並在原始代碼中保持最後的引用(對進度對話框)? – bgs 2012-01-11 17:10:11