2011-12-25 28 views
2

我尝试使用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); 
    } 
    } 

任何想法? 谢谢。

+0

所有我可以在那一刻想到的是使用两个线程解决它。一个处理输入事件的可运行的HandlerThread和一个定期生成包含NativeGameLib.gameTick(t)的可运行的第二个线程;呼叫。 但我觉得它不是很优雅。 – Dirk 2011-12-25 13:27:34

+0

看看sdk的例子:C:\ android-sdk \ samples \ android-10 \ JetBoy C:\ android-sdk \ samples \ android-10 \ LunarLander – Selvin 2011-12-25 13:31:43

回答