2012-03-15 72 views
3

我在我的應用程序中使用ScrollView類。我從指南針的畫布上繪製一些數據,這些數據是通過用戶的交互定期更新的。如何定期調用onDraw?

如何在沒有用戶觸摸的情況下定期調用onDraw方法?我是否可以定期刷新畫布的內容而無需其他線程並致電view.postInvalidate()

+1

爲什麼你不想用另一個線程來做到這一點? – DRiFTy 2012-03-15 20:13:01

+0

我認爲還有其他方法。如果沒有其他方法,我使用線程... – misco 2012-03-15 20:27:53

+0

我可以看到發生這種情況的唯一方法是使用線程,DeeV下面的答案是您應該做的。 Handler將允許你從你自己的線程調用UI線程。 – DRiFTy 2012-03-15 20:34:35

回答

8

Handler類對於這樣的事情非常方便。

Handler viewHandler = new Handler(); 
Runnable updateView = new Runnable(){ 
    @Override 
    public void run(){ 
    globalView.invalidate(); 
    viewHandler.postDelayed(updateView, MILLISECONDS_TILL_UPDATE); 
    } 
}; 

呼叫viewHandler.post(updateView); UI線程中的任何地方,它會無限地調用RunnableMILLISECONDS_TILL_UPDATE指定的毫秒每x數量。致電viewHandler.removeCallbacks(updateView);結束它或使用布爾標誌來阻止另一個帖子。