-2

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?

4

3 回答 3

1

使用操作系统处理程序

您必须在工作线程的上下文中创建处理程序,然后使用要调用的可运行对象调用 .post()。每次绘制时都这样做,它会在工作线程上发布更新内容。现在您可能想要锁定绘图线程,直到更新完成,在这种情况下,您需要使用线程安全变量之类的东西来强制绘图线程等待更新完成。

于 2013-07-17T16:11:22.733 回答
1

它非常简单,只需使用处理程序或方法创建对主线程的回调,runOnUiThread并在您希望更新时从工作线程更新 UI

于 2013-07-17T15:59:21.753 回答
1

有一个权衡:

  • 您希望足够频繁地更新该屏幕,以使所有动作看起来都很流畅。
  • 您想为主线程提供尽可能多的 CPU

简单的解决方案是这样的:

  1. 工作马线程设置一个标志,指示何时有值得重绘的更改。
  2. UI线程有一个流程有点像这样

    do {
        renderScreen();
        while (!screenNeedsRedrawing) {
            Thread.sleep(10);
        }
    }
    
于 2013-07-17T16:06:09.647 回答