2012-05-30 63 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();} 
相关问题