Android:从队列更新 UI



我正在为我当地的电影中心开发一个粉丝应用程序。该应用程序检索筛选时间表,该计划存储为具有基本数据(名称和筛选时间)的Film对象的List

对于每部电影,我都会对电影中心网站上的电影页面进行异步HTTP调用,以检索完整的数据 - 描述,年份,长度。结果被解析,转换为FilmData对象,并插入到BlockingQueue

我希望 UI 线程在 HTTP 调用返回数据时更新电影描述。我不能使用 take()poll() ,因为它们会冻结 UI 线程。

我想到了两个策略:

  • 从外部线程轮询BlockingQueue,并使用 runOnUiThread 更新 UI。
  • 使用 AsyncTask 以非阻塞方式轮询队列。

在任何网络调用时更新 UI 在 Android 应用程序中完成相当常见的场景。正确的方法是什么?

使用Handler . 例如,一旦 HTTP 调用完成并且您已经创建了 FilmData 对象,请向Activity发布处理程序消息。在HandlerhandleMessage方法中,更新UI。

最新更新