Hi so I have 1 thread which uses a surfaceview to draw to the screen then another thread updating the positions of objects on the screen. How do I make these run at the same speed?
问问题
170 次
3 回答
1
使用操作系统处理程序
您必须在工作线程的上下文中创建处理程序,然后使用要调用的可运行对象调用 .post()。每次绘制时都这样做,它会在工作线程上发布更新内容。现在您可能想要锁定绘图线程,直到更新完成,在这种情况下,您需要使用线程安全变量之类的东西来强制绘图线程等待更新完成。
于 2013-07-17T16:11:22.733 回答
1
它非常简单,只需使用处理程序或方法创建对主线程的回调,runOnUiThread
并在您希望更新时从工作线程更新 UI
于 2013-07-17T15:59:21.753 回答
1
有一个权衡:
- 您希望足够频繁地更新该屏幕,以使所有动作看起来都很流畅。
- 您想为主线程提供尽可能多的 CPU
简单的解决方案是这样的:
- 工作马线程设置一个标志,指示何时有值得重绘的更改。
UI线程有一个流程有点像这样
do { renderScreen(); while (!screenNeedsRedrawing) { Thread.sleep(10); } }
于 2013-07-17T16:06:09.647 回答