我正在为我当地的电影院建立一个粉丝应用程序。该应用程序检索筛选计划,该计划存储为具有基本数据List
的Film
对象 - 名称和筛选时间。
对于每部电影,我对cinematheque 站点中的电影页面进行异步HTTP 调用,以检索完整数据——描述、年份、长度。结果被解析,转换为FilmData
对象,并插入到BlockingQueue
.
我希望 UI 线程在 HTTP 调用返回数据时更新电影描述。我不能使用take()
or poll()
,因为它们冻结了 UI 线程。
我想到了两个策略:
BlockingQueue
从外部线程轮询,并使用runOnUiThread
.- 用于以
AsyncTask
非阻塞方式轮询队列。
当任何网络调用完成时更新 UI 是 Android 应用程序中非常常见的场景。正确的方法是什么?