2011-08-10 20 views
1

我很初学者在安卓所以这里是东西:我应该使用Handler类或同步功能线程到线程通信

我在我的游戏多线程:主要活动,渲染器和游戏循环。

所以问题是: 我应该从Handler类派生类并将消息发送给线程,还是应该使用同步函数进行线程间通信?

这两种方法的优缺点是什么?

(我还没有在Java中的专家,C++是我的祖国)

回答

1

当您需要将操作恢复到您正在运行的活动时,处理程序非常好。

当谈到从UI到其他线程的通信时,我更喜欢使用线程安全集合来管理从一个到另一个的通信。例如,当我开发一款游戏时,我通常会将UI线程报告触摸事件插入到我的游戏线程中,方法是将它们插入到LinkedBlockingQueue中,然后游戏线程闲置。

1

该处理器旨在简化线程。你应该尽可能地使用它,但你只能在由GUI事件调度器管理的线程上使用处理程序。对于大多数游戏来说,主UI和OpenGL线程由事件调度程序管理,处理程序对它们工作得很好。

1

两个建议的选项根本不同。用Handlers您正在发布拥有该处理程序的线程的消息。也就是说,你会发布一条消息给UI线程,以便以某种方式修改UI。使用同步方法,发送消息的线程将成为正在执行的线程。 Android中的并发抽象是相当不错的,所以我会敦促你尽可能地使用它们而不是自己动手。