2013-06-18 115 views
1

我的surfaceView運行在一個線程中,因爲有時它是動畫的,但是大多數時候它只需要重新繪製一次並離開以響應某些用戶交互,但是因爲它在onDraw線程中的運行不斷被調用...不斷重新繪製正在放慢它,使我的手機溫暖:)SurfaceView線程 - 啓動/停止onDraw調用?

我想使用無效(Rect),但不能看到如何做到這一點時線程控制onDraw ...

一切都不斷地重繪不能是這樣,我應該去,任何幫助將大大appriciated ...

回答

0

在你的線程,致電onDraw()後,您可致電wait()。這將強制線程進入睡眠狀態,直到提示繼續工作。一旦用戶進行了交互並且您想要恢復動畫,請在線索上呼叫notify()將其喚醒並重新繪製。

如果這並不能完全解決您的問題,請考慮將wait()放入if語句中,以便它只會在滿足某些條件後纔會發生。

+0

非常感謝,...我有一個看看 - 聽起來很完美。是否有能力指定一個地區重繪只是不可能的時候這樣做? ......乾杯 – treeClimber

+0

你可以在你的線程上設置'setDirtyRect(Rect dirty)'方法,並在調用'notify()'之前設置一個區域。使用它之後,請務必通過重置/清除髒胳膊清理。 – kcoppock

+0

這很好,很多嘗試。我會做一些閱讀......謝謝 – treeClimber