我尝试使用android编写一个小游戏,并遇到线程问题。 游戏的主循环在这个自己的线程中运行,基本上只是做这样的事情:Android线程 - 队列runables
public void run() {
while (true) {
NativeGameLib.gameTick(t);
}
}
现在我想触摸输入传递给我的NativeGameLib。我以为我在UI线程中使用视图的onTouchEvent(),创建一个可运行的内部并让它在主循环线程上执行。
但我真的不知道该怎么做。我看到有一个Handler和一个Looper类,我可以使用该处理程序将可运行程序发布到messageQueue和Looper.loop()函数来处理队列。据我所知,loop()函数无休止地检查新消息并因此阻塞该线程。 那么,我该如何将它与我的线程结合起来。我想在线程中这样做:
public void run() {
while (true) {
processMessageQueue();
NativeGameLib.gameTick(t);
}
}
任何想法? 谢谢。
所有我可以在那一刻想到的是使用两个线程解决它。一个处理输入事件的可运行的HandlerThread和一个定期生成包含NativeGameLib.gameTick(t)的可运行的第二个线程;呼叫。 但我觉得它不是很优雅。 – Dirk 2011-12-25 13:27:34
看看sdk的例子:C:\ android-sdk \ samples \ android-10 \ JetBoy C:\ android-sdk \ samples \ android-10 \ LunarLander – Selvin 2011-12-25 13:31:43