1

我正在为我当地的电影院建立一个粉丝应用程序。该应用程序检索筛选计划,该计划存储为具有基本数据ListFilm对象 - 名称和筛选时间。

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

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

我想到了两个策略:

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

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

4

1 回答 1

2

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

于 2012-11-12T08:21:13.573 回答