我正在阅读Android 培训中从 UI 线程处理位图的章节。在本章中,作者谈到了 GridView 与 AsyncTask 结合使用时的并发处理:
ListView 和 GridView 等常见视图组件在与 AsyncTask 结合使用时会引入另一个问题,如上一节所示。为了提高内存效率,这些组件在用户滚动时回收子视图。如果每个子视图都触发了一个 AsyncTask,则无法保证当它完成时,关联的视图还没有被回收用于另一个子视图。此外,不能保证异步任务的启动顺序就是它们完成的顺序。
对于上述段落,我有两个问题:
(1) GridView 的子视图是什么?以下图为例,每个网格都是子视图吗?
(2) 我很困惑“如果每个子视图都触发了一个 AsyncTask,则不能保证当它完成时,关联的视图还没有被回收用于另一个子视图。” 谁能解释得更详细些?比如grid[1,1]触发了一个AsyncTask,当AsyncTask完成后,为什么会出现问题呢?