Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android游戏循环-线程还是处理器?_Android_Multithreading - Fatal编程技术网

Android游戏循环-线程还是处理器?

Android游戏循环-线程还是处理器?,android,multithreading,Android,Multithreading,我正在用Android编写一个简单的游戏,想知道是否有任何理由在生成线程运行游戏或使用处理程序之间进行选择。在我以前的应用程序中,我一直使用处理器,因为我认为它们更有效,但月球着陆器示例游戏使用单独的线程,所以我不确定哪一个是最好的 有人能解释这是什么吗 如果您想知道技术上的差异,我不认为月球着陆器运行的线程与处理程序使用的可运行线程有什么不同,除了可运行线程在UI线程上运行。月球着陆器使用线程的原因是为了从UI线程中获得执行 原因是通常的游戏架构希望通过一个主循环运行,该循环会更新并尽快刷新屏

我正在用Android编写一个简单的游戏,想知道是否有任何理由在生成线程运行游戏或使用处理程序之间进行选择。在我以前的应用程序中,我一直使用处理器,因为我认为它们更有效,但月球着陆器示例游戏使用单独的线程,所以我不确定哪一个是最好的


有人能解释这是什么吗

如果您想知道技术上的差异,我不认为月球着陆器运行的
线程
处理程序使用的
可运行线程
有什么不同,除了
可运行线程
在UI线程上运行。月球着陆器使用
线程
的原因是为了从UI线程中获得执行

原因是通常的游戏架构希望通过一个主循环运行,该循环会更新并尽快刷新屏幕。此外,大多数游戏实际上并不经常使用UI,而是直接绘制到画布/表面


如果您正在做这些事情,您将需要为主循环使用一个单独的线程。如果你把循环放在UI线程中,你会得到一个ANR。处理程序可用于将数据发送回UI线程,但在游戏的游戏部分(菜单、加载屏幕等不同),它们通常不会被太多使用。

您不想在UI线程中执行任何密集型操作,否则Android操作系统将介入,在这种情况下,您的主游戏循环很可能是资源密集型的

总而言之,保持UI线程的畅通对于应用程序UI的响应非常重要。如果要执行较长的操作,应确保在额外的线程(后台线程或工作线程)中执行这些操作


--来自Android文档

谢谢您的帮助。