3
我在我的應用程序中使用ScrollView類。我從指南針的畫布上繪製一些數據,這些數據是通過用戶的交互定期更新的。如何定期調用onDraw?
如何在沒有用戶觸摸的情況下定期調用onDraw方法?我是否可以定期刷新畫布的內容而無需其他線程並致電view.postInvalidate()
?
我在我的應用程序中使用ScrollView類。我從指南針的畫布上繪製一些數據,這些數據是通過用戶的交互定期更新的。如何定期調用onDraw?
如何在沒有用戶觸摸的情況下定期調用onDraw方法?我是否可以定期刷新畫布的內容而無需其他線程並致電view.postInvalidate()
?
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線程中的任何地方,它會無限地調用Runnable
在MILLISECONDS_TILL_UPDATE
指定的毫秒每x數量。致電viewHandler.removeCallbacks(updateView);
結束它或使用布爾標誌來阻止另一個帖子。
爲什麼你不想用另一個線程來做到這一點? – DRiFTy 2012-03-15 20:13:01
我認爲還有其他方法。如果沒有其他方法,我使用線程... – misco 2012-03-15 20:27:53
我可以看到發生這種情況的唯一方法是使用線程,DeeV下面的答案是您應該做的。 Handler將允許你從你自己的線程調用UI線程。 – DRiFTy 2012-03-15 20:34:35