因此,在我的對話框中,我有一個按鈕啓動Asynctask下載器從我的服務器獲取某個文件;而且工作得很好。但是,我想關閉當前的對話框並在點擊按鈕上顯示ProgressDialog。我將如何處理這個問題?Android對話框和AsyncTask導致UI凍結
目前,如果我點擊按鈕(我的對話框中的一個元素),整個UI會在下載器從服務器下載文件時凍結。下載程序完成其任務後,進度對話框將顯示。
我的代碼看起來是這樣的
MainActivity{
Dialog dialog;
ProgressDialog progress;
onCreate(){
dialog = new Dialog(this);
progress = new ProgressDialog(this);
dialog.setContentView(Some View Resource With My Button);
someMethod();
dialog.show();
}
someMethod(){
Button button = (Button) dialog.findViewById(resource of button);
button.setOnClickListener(new OnClickListener(){
onClick(){
dialog.dismiss();
progress.show();
new DownloaderAsyncTask(progress).execute().get();
}
//go to another activity when download finished
});
}
private class DownloaderAsyncTask extends AsyncTask<Void, Void, Void>{
ProgressDialog progress;
DownloaderAsyncTask(ProgressDialog progress){
this.progress = progress;
}
doInBackGround(){
//Downloading
}
onPostExecute(){
//Kill connection
this.progress.dismiss();
}
}
}
感謝。請讓我知道,如果你們需要任何額外的信息。
顯示您的logcat –
沒有錯誤。用戶界面被凍結,因爲它正在等待下載器完成。下載器完成後,一切正常。但是,我希望當前的對話框被忽略,並且只要單擊該按鈕,就會顯示progressDialog。 – Infinity
不要調用'get()'。看到答案。 –