我正在開發一款適用於Android的國際象棋遊戲(http://androidchess.appspot.com),使用SurfaceView
作爲棋盤。我有一張圖畫Thread
,它將棋盤畫成一個循環。問題在於,如果沒有活動動畫(90%以上的時間),將CPU和電池浪費在繪圖上是沒有意義的。我應該如何解決這個問題?也許以某種方式暫停和恢復圖紙Thread
?暫停和恢復線程繪製到SurfaceView
2
A
回答
3
嘗試是這樣的(你可以通過嘗試this code測試):
final Object monitor = new Object();
class Drawing implements Runnable
{
@override
void run()
{
while(true)
{
synchronized(monitor)
{
monitor.wait();
}
// draw
}
}
}
public static void main(String[] args) {
// start your thread
while(true)
{
if(needRefresh)
{
synchronized(monitor)
{
monitor.notify();
}
}
}
}
我會建議使用Semaphore,如果你想一次信號,然後不斷吸引(即不阻塞),直到信號已關閉。
+0
謝謝,等待/通知正是我一直在尋找的東西。 – fhucho 2010-03-20 19:09:56
0
相關問題
- 1. 如何暫停和恢復surfaceView線程
- 2. 暫停和恢復線程
- 3. 在Android中暫停和恢復SurfaceView中的線程
- 4. 暫停/恢復線程?
- 5. 如何暫停和恢復線程
- 6. 安全地暫停和恢復線程
- 7. 恢復和暫停ArrayList中的線程
- 8. 如何暫停和恢復線程?
- 9. 在Android中暫停和恢復線程
- 10. VB.Net線程暫停和恢復
- 11. 控制線程暫停和恢復一組工作線程
- 12. 如何從MainActivity中暫停/恢復SurfaceView?
- 13. 線程暫停/停止活動恢復
- 14. 暫停/恢復另一個線程
- 15. Java ExecutorService暫停/恢復特定線程
- 16. 線程暫停/恢復問題
- 17. Perl線程不會暫停/恢復
- 18. 工作線程暫停/恢復實施
- 19. 如何暫停/恢復線程
- 20. 線程暫停但不恢復
- 21. 線程同步和線程暫停\恢復
- 22. D3補間 - 暫停和恢復控制
- 23. 音頻錄製|暫停和恢復
- 24. 啓動暫停和恢復串行數據繪製在圖
- 25. 暫停和恢復BackgroundWorker
- 26. 暫停和恢復SKScene
- 27. 暫停和恢復ASINetworkQueue
- 28. 暫停和恢復宏
- 29. 暫停和恢復功能
- 30. WebRTC暫停和恢復流
@fhucho我有一個簡單的例子,你...看到我的答案更多的細節。 – Kiril 2010-03-20 16:48:07