2012-05-30 3 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 
    } 
}); 
} 

불행히도, 이것이 정확한지는 모르겠지만 그것이 유일한 해결책이었습니다. 어쩌면 누군가가 더 나은 해결책을 도울 수 있습니다. 나는 감사 할 것이다.

추신. 미안해, 내 영어로.

+1

게시자는 어디에서 게시하고 있습니까? 활동에서 생성 되었습니까? 그렇다면 UI 스레드에서 Handler가 이미 실행 중이므로 runOnUiThread 호출이 필요하지 않습니다. – twaddington

+0

@twaddington이 맞습니다. 메인 스레드에서 핸들러를 생성하면 게시 된 메소드는 UI 스레드에서 실행됩니다. runOnUiThread를 사용하고 있다면 아마 핸들러가 필요 없을 것입니다. – Phil

+0

예, Activity에서 핸들러를 생성했습니다. 따라서이 경우 실행 가능한 업데이트는 UI 스레드에서 실행됩니까? – mainmilly

답변

-1

AsyncTask도 사용할 수 있습니다. 안드로이드가 쓰레드 생성을 처리하도록하십시오 ...

protected Long doInBackground(URL... urls){Thread.sleep(10000);} 
protected void onPostExecute(Long result) {methodToRedraw();} 
관련 문제