2011-05-28 84 views
1

我是Java新手,也是Android新手。我正在开发一款游戏,并试图了解Java和Android中事件的确切性质。我有几个问题可以帮助我理解在我的应用程序中执行事件处理的正确方法。Java中的线程和事件处理

它是一个网络游戏,所以我需要检查用户是否进行了移动或不更新视图。此外,如果他需要太长时间,我还需要提醒用户采取行动。为此,我有两个线程 -

  • 定时器线程每10秒过期并根据需要调用updateview或提示用户进行移动。
  • 事件线程被当用户点击屏幕上,使菜单等

这是正确的做法上的移动或点击产生的?这两个可以在任何时候被解雇。

下面是我这一看问题 -

  • 时,当另外一个是积极的一个线程获取运行会发生什么。
  • 如果两个线程同时启动,哪个线程优先。
  • 计时器线程中的事件是否排队?
  • 如果是的话,我可以选择队列中的哪一个使用?
  • 我可以取消队列中的事件吗?对于例如如果我有2个updateview事件排队在队列中,我只需要调用它一次。

感谢您的任何意见。

P

回答

2

我建议在Android AsyncTask读了。

+0

感谢您的反馈。我正在阅读本文,并会看到如何使用它。 – user220201 2011-05-29 14:50:41

+0

谢谢AsyncTask非常好。在阅读有关AsyncTasks的同时,我也学习了一些关于Android中的线程和UI线程的非常有用的东西。 – user220201 2011-06-01 14:42:11

1

考虑你可以使用线程实现一个定时器WiTHOUT。使用单个处理程序切换什么,并发送postMessageDelayed(什么0,毫秒)到处理程序说每秒。你可以设置一个计数器变量为零,并在0处理程序中每隔一秒检查一次该标志,将计数器递增1。如果值大于等于10,则发布消息并将该变量重置为零。如果用户选择一个动作,则将实例变量重置为零。

一个耗时的动作可以在一个单独的线程中运行,该线程可以向处理程序发送消息,可能在完成时使用1。或者您可以在单独的asyncTask中运行耗时的操作。

JAL

+0

感谢您的反馈,我会尽力做到这一点,看看它是如何发展。 – user220201 2011-05-29 14:50:59