【问题标题】:Threads and event handling in JavaJava中的线程和事件处理
【发布时间】:2011-05-28 16:48:14
【问题描述】:

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

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

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

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

这是我看到的问题 -

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

感谢您的任何意见。

P

【问题讨论】:

    标签: java android multithreading event-handling


    【解决方案1】:

    我建议阅读 Android AsyncTask

    【讨论】:

    • 感谢您的反馈。我正在阅读这篇文章,并将了解如何使用它。
    • 感谢 AsyncTask 非常好。在阅读 AsyncTasks 时,我还学到了一些关于 Android 中线程和 UI 线程的非常有用的东西。
    【解决方案2】:

    考虑一下,您可以使用线程来实现没有定时器的定时器。使用单个处理程序切换什么,然后每隔一秒向处理程序发送一个 postMessageDelayed(what 0,milliseconds)。您可以将计数器变量设置为零,并在 what 0 处理程序中每隔一秒检查一次标志,将计数器加一。如果值 >= 10,则发布消息并将变量重置为零。如果用户选择一个动作,则将实例变量重置为零。

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

    日航

    【讨论】:

    • 感谢您的反馈,我会尝试这样做,看看效果如何。
    猜你喜欢
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多