应该在SurfaceView中完成计算还是单独的线程

时间:2013-07-15 15:22:41

标签: android multithreading android-asynctask surfaceview

所以在过去的几个月里,我创造了一个相当复杂的游戏,即将发布。剩下的唯一问题是它运行得如我所希望的那样顺畅,我认为这是因为我构建我的线程的方式。我的代码中的所有内容都是通过surfaceview完成的。所有计算,位置更新,绘图,碰撞等都在那里完成。我想知道我是否应该将所有更新放入一个线程然后只处理在surfacethread中的绘图。这是正确的方法,如果是这样,我将如何实现它(asynctask,线程,处理程序等)?

1 个答案:

答案 0 :(得分:1)

当然,您应该避免在UI线程中进行任何耗时的计算。您还可能会收到ANR错误消息。

您可以使用:

  • AsyncTask,但要注意它有一些缺陷和缺点。例如,不保证甚至可以开始或完成。

  • 如果您需要执行需要在工作线程中按顺序执行的操作,请
  • IntentServicesHandlerThreads

  • WorkerThreadPool如果您需要执行真正的并行任务。