【问题标题】:Use of Handler in Single Threaded application单线程应用中 Handler 的使用
【发布时间】:2012-10-05 18:19:19
【问题描述】:

根据 Android 文档

"一个 Handler 允许你发送和处理 Message 和 Runnable 对象 与线程的 MessageQueue 相关联。每个 Handler 实例都是 与单个线程和该线程的消息队列相关联。什么时候 你新建一个Handler,它绑定到线程/消息队列 正在创建它的线程——从那时起,它将传递 消息和可运行的消息到该消息队列并执行它们 从消息队列中出来。”

我完全了解了多线程应用程序中 Handler 的使用,其中一个线程将使用 Handler 发布到另一个线程消息队列,但是单线程应用程序中的 Handler 有什么用。我之所以问这个问题是因为我在 developer.google.com 上看到了几个在单线程应用程序中使用 HAndler 的示例应用程序。 Here 就是一个例子。

【问题讨论】:

  • 我很确定这是多线程使用,因为它显示了在 AsyncTask 中使用的处理程序。但即便如此,该示例在 cmets 中多次表示他们正在使用处理程序更新 UI(可能来自服务)。

标签: android multithreading handler


【解决方案1】:

您发布的代码示例不是单线程的 - 例如 AsyncTask 的 doInBackground() 方法在与 UI 线程分开的线程上运行。这就是在该方法中调用 Handler 的原因。

阅读 AsyncTasks,然后查看示例中的 ReverseGeocodingTask。

【讨论】:

  • 我的错。我确实看到了 AsyncTask 但我没有注意到一个事实,因为使用了 AsyncTask Handler。我很困惑,因为消息也是从 onResume() 调用的 setup() 发送的。感谢您指出这一点。
  • 没问题。 Android 中的线程模型可能会有些棘手。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-01
  • 2013-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多