Java中的线程和事件处理

时间:2011-05-28 16:48:14

标签: java android multithreading event-handling

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

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

  • 计时器线程每10秒到期,并在需要时调用updateview或提示用户进行移动。
  • 当用户点击屏幕进行移动或点击菜单等时,会创建事件线程。

这是正确的做法吗?这两个可以随时解雇。

以下是我看到的问题 -

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

感谢您的任何意见。

P

2 个答案:

答案 0 :(得分:2)

我建议您阅读Android AsyncTask

答案 1 :(得分:1)

考虑您可以使用线程实现计时器WiTHOUT。使用单个Handler切换内容并向处理程序发送postMessageDelayed(0,毫秒),每隔一秒发送一次。您可以将计数器变量设置为零,并在what 0处理程序中每隔一秒检查一次该标志,将计数器递增1。如果值>> = 10,则发布消息并将变量重置为零。如果用户选择操作,请将实例变量重置为零。

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

JAL