2012-05-30 61 views
0

我需要等待一段時間(10秒),之後我必須重繪畫布。我使用Handler#postDelayed來測量時間段。我的代碼(只是部分):從另一個線程調用runOnUiThread

handler.postDelayed(updates, 10000); 

private Runnable updates = new Runnable() { 
    public void run() { 
     methodToRedraw(); 
    } 
}; 

public void methodToRedraw(){ 
runOnUiThread(new Runnable() { 
    public void run() { 
     // redraw canvas 
    } 
}); 
} 

不幸的是,我不知道這是否正確,但它是我唯一的解決方案。也許有人可以幫助或更好地解決問題。我會很感激。

PS。對不起我的英語不好。

+1

您在哪裏創建要發佈的處理程序?它是否在活動中創建?如果是這樣,你不需要runOnUiThread調用,因爲處理程序已經在UI線程上運行。 – twaddington

+0

@twaddington是對的。如果您在主線程中創建處理程序,則發佈的方法將在ui線程中運行。如果你使用runOnUiThread,你可能不需要處理程序。 – Phil

+0

是的,我在Activity中創建了處理程序。所以在這種情況下,可運行更新將在UI線程上運行? – mainmilly

回答

-1

您也可以使用AsyncTask。讓Android處理線程創建...

protected Long doInBackground(URL... urls){Thread.sleep(10000);} 
protected void onPostExecute(Long result) {methodToRedraw();} 
相關問題