2011-08-01 18 views
0

我有一個在onCreate過程中調用的長時間運行的方法,此方法填充textviews以便與UI交互,並且可能更新70個標籤(大約3至20秒,具體取決於設備)。在執行大型方法時顯示android中的progressdialog

我想在此方法執行時顯示progressdialog。

理想情況下,我想在UI線程上激活我的方法,一旦Activity已經顯示並顯示進度,我不能這樣做,直到方法結束,Activity纔會繪製。

我希望找到一個活動後顯示的事件,我發現下面的一個,但它仍然離開屏幕黑色,直到方法結束。

@覆蓋 公共無效onPostCreate(捆綁savedInstanceState)

我通常是WP7開發者,並在.NET中添加這顯示了UI後解僱的onLoadComplete事件處理程序,但用戶面前一個與UI交互的機會,我如何在Android JAVA中執行此操作?

謝謝

+0

裏面? – PedroAGSantos

回答

0

在視圖中放置一個ProgressBar。

然後在OnCreate()或的onResume()方法做到這一點:

new Thread() { 
    public void run() { 
     yourLargeMethod(); 
    } 
}.start(); 

現在你看到無痛threathing你可以做到這一點的方法來更新進度

public void yourLargeMethod() { 
// doSomething 
... 

runOnUiThread(new Runnable() { 
     public void run() { 
      // update the progress from the thread 
      progressBar.setProgress(x); // x is your progress, 0 <= x <= progressBar.getMax() 
     } 
    }); 
} 
+0

使用AsyncTask可能會更好。 – Kaj

+0

雖然使用AsyncTask,但我不得不更新UI 70多次,並將事件處理程序連接到按鈕等。我很長的方法不是計算,它設置了一個大的屏幕上的報告,因此讓它在UI線程上運行對我來說是最有利的,我只需要在構建時使用進度條阻止UI。是否沒有事件稱爲活動後呈現? – Ben

+0

爲什麼你不顯示一個ProgressBar,而是在一個單獨的線程中構建你選擇的ViewGroup中的UI,而這個UI沒有被顯示出來。最後將生成的ViewGroup添加到主佈局,並刪除/隱藏ProgressBar。如果在UI線程中執行,progressBar將不會移動,設備也不會響應命令。 – Auras

相關問題