我正在开发一款适用于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. 安全地暂停和恢复线程
- 4. 如何暂停和恢复线程
- 5. 如何暂停和恢复线程?
- 6. 线程暂停但不恢复
- 7. Perl线程不会暂停/恢复
- 8. 线程暂停/恢复问题
- 9. Java ExecutorService暂停/恢复特定线程
- 10. 工作线程暂停/恢复实施
- 11. 线程同步和线程暂停\恢复
- 12. 音频录制|暂停和恢复
- 13. Twilio录制:暂停和恢复
- 14. D3补间 - 暂停和恢复控制
- 15. 暂停和恢复流
- 16. 暂停和恢复BackgroundWorker
- 17. 暂停和恢复AsyncTasks? (Android)
- 18. 暂停和恢复SKScene
- 19. 暂停和恢复ASINetworkQueue
- 20. 暂停和恢复功能
- 21. WebRTC暂停和恢复流
- 22. Android暂停和恢复教程
- 23. 从cpp的父线程中暂停并恢复线程
- 24. 当暂停和恢复线程时没有更新UI
- 25. 通过按键暂停和恢复线程
- 26. 暂停和恢复辅助,同步线程
- 27. 在J2ME中,如何暂停和恢复线程
- 28. 暂停和恢复一个C++线程在另一个
- 29. 暂停/恢复游戏线程使用wait()和notify() - Android
- 30. 如何暂停/恢复视频录制
@fhucho我有一个简单的例子,你...看到我的答案更多的细节。 – Kiril 2010-03-20 16:48:07