【问题标题】:Android Threading - Queue runablesAndroid 线程 - 队列可运行对象
【发布时间】:2011-12-25 20:55:52
【问题描述】:

我尝试使用 android 编写一个小游戏,但在线程方面遇到了一些问题。 游戏的主循环在这个自己的线程中运行,基本上只是做这样的事情:

  public void run() {
    while (true) {
      NativeGameLib.gameTick(t);
    }
  }

现在我想将触摸输入传递给我的 NativeGameLib。我以为我在 UI 线程中使用视图的 onTouchEvent(),在里面创建一个可运行的并让它在主循环线程上执行。

但我真的不知道该怎么做。我已经看到有一个 Handler 和一个 Looper 类,并且我可以使用该处理程序将 runables 发布到 messageQueue 和 Looper.loop() 函数来处理队列。

据我了解,loop() 函数会无休止地检查新消息并因此阻塞线程。 那么,我怎样才能将它与我的线程结合起来。我想在线程中做这样的事情:

  public void run() {
    while (true) {
      processMessageQueue();
      NativeGameLib.gameTick(t);
    }
  }

有什么想法吗? 谢谢。

【问题讨论】:

  • 目前我所能想到的就是使用两个线程来解决它。一个 HandlerThread 获取可运行对象以处理输入事件,第二个线程定期生成包含 NativeGameLib.gameTick(t) 的可运行对象;称呼。但我认为它不是很优雅。
  • 看一下sdk示例:C:\android-sdk\samples\android-10\JetBoy C:\android-sdk\samples\android-10\LunarLander

标签: android multithreading handler looper


【解决方案1】:

【讨论】:

  • 我认为在这种情况下这对我没有帮助。我需要在我的游戏循环线程中处理输入事件,由于线程不是视图,我不能在这里使用 view.post()。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多