2012-07-25 67 views

回答

22

也許你正在尋找:

Activity.runOnUiThread(Runnable action) 
1

我不記得invokeLater()究竟是什麼,但如果你想執行一些延遲的事情,你可以使用postDealayed()。這是在UI線程上進行的,因此不適合長時間運行的任務。

+1

'的invokeLater()'提出了'Runnable'放到隊列中,以便它將由EDT執行。 – 2012-07-25 02:29:09

+0

postDelayed()不是靜態函數嗎?那麼我必須隨時攜帶UI線程的處理程序才能調用它? – GMsoF 2012-07-25 02:32:40

+0

@GregKopff函數的位置(在哪個類中)? – GMsoF 2012-07-25 02:33:57

4
Activity.runOnUiThread(Runnable action); 

上述方法比Java的的invokeLater略有不同,因爲它會檢查,如果你已經在UI線程,然後它會立即運行Runnable接口。

還有另一種方法可以確保您的Runnable被稍後調用,即使您在UI線程上也不會立即調用。要做到這一點,你寫下面的代碼,而你是在主線程..如果你把這個當後臺線程運行的您​​將會在後臺線程exected ..

Handler h = new Handler(); 
    h.post(new Runnable() { 
     @Override 
     public void run() { 
     //your code.. 
     } 
    );