2011-10-29 114 views
0

我試圖在下載數據的過程中顯示進度對話框。Android UI凍結而不是顯示ProgressDialog

眼下,這就是我:

final ProgressDialog pd = ProgressDialog.show(this, "Updating", "Loading..."); 
    Thread td = new Thread(new Runnable(){ 
     public void run(){ 
      //time consuming download 
      pd.dismiss(); 
     } 
    }); 
    td.start(); // start the thread and use join to wait for it to return 

    td.join(); //wrapped in try catch not shown here 

我不需要從下載進度的更新,直到數據被下載的應用程序不應該做任何事情,這就是爲什麼我使用加入 - 所以它會等待下載完成。

我得到的結果是

  1. 按下按鈕
  2. UI凍結
  3. 進度對話框閃爍和關閉,下載完成

我需要的是

  1. 按鈕
  2. 進度對話框顯示
  3. 進度對話框關閉,下載完成。

任何想法爲什麼它不馬上顯示,而是在完成時閃爍和熄滅?

+0

爲什麼downvote?我想在這裏學習。我的問題不好嗎? – xdumaine

+0

+1我在這裏沒有看到有什麼理由爲此付出代價! – Knickedi

回答

0

從未使用過join但是當我閱讀文檔時,它說另一個線程(這裏是UI線程)將被阻塞,直到工作線程完成。所以這解釋了你描述的行爲相當不錯。

改爲使用AsyncTask。做下載doInBackground和處理結果在onPostExecute它會工作...