2012-08-24 40 views
0
protected void showSpinner() { 
    dialogSpin = ProgressDialog.show(activity, "", 
      "Loading. Please wait...", true); 

    Thread t = new Thread(new Runnable(){ 

     @Override 
     public void run() { 
      activity.runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 


        EverydayNotesAndroid3Activity.importAllCalendar(); 
       } 
      }); 
     } 

    }); 
    t.start(); 
} 

我想在線程運行時顯示微調器。通過這種方式,我可以顯示導入日曆的用戶如何導入用戶。Android在顯示進度對話框時執行代碼

問題:我的微調對話框只會在導入完成時顯示。我不知道我在做什麼錯,因爲根據我的代碼,它應該顯示對話框,然後運行導入(需要30秒),但再次,對話框會等待導入結束。

感謝您關注,請求更多信息。

回答

1

我會使用AsyncTask來導入日曆。 AsyncTask有三個可以被覆蓋的方法。您可以覆蓋doInBackground並完成所有在後臺線程中完成的任務。每當應用程序界面中的某些內容發生更改時,您可以從後臺任務調用publishProgress。然後,AsyncTask將在UI線程中調用onProgressUpdate以允許您向用戶顯示進度。

1

您正在UI線程中自行導入日曆。然後你的進度對話框等待,直到導入完成。然後它會再次顯示。

如果你想顯示進度對話框,然後導入日曆在另一個線程不在UI線程。

+0

這很容易理解和幫助。我嘗試過,確實有效,但在這個importCalendar函數中,我需要更改對話框的文本。我無法在普通線程中修改UI ...我該怎麼辦? –

+0

然後使用Asynctask,它只打算做這種類型的操作。 – sankar