ListViews如何知道哪个视图属于特定的AsyncTask线程

时间:2014-12-07 20:44:38

标签: android listview bitmap

我已经阅读了以下article,它解释了listView的工作原理,如果在lruCache / diskCache中找不到位图,有时视图会启动asyncTask线程。但后来这种观点得到了回收。因此,当asyncTask完成时,它如何知道要填充哪个视图?你有没有一个简单的示例项目可以指导我?

2 个答案:

答案 0 :(得分:0)

异步任务总是尝试填充您作为参数提供的视图。因此,当屏幕方向改变并且活动被重新创建时,任务可能会或可能不会完成解码位图(取决于您读取turorial的距离),但它不会显示图像。一旦活动重新创建,将启动新的异步任务以加载图像。

答案 1 :(得分:0)

回收的视图仍在那里(因为它被回收)。只要您不告诉AsyncTask它不应该填充到现在回收的视图,它就会在视图中显示错误的图像。

您需要使用取消机制来实现AsyncTask,该机制会通知AsyncTask它不应再填充(或者您对任务中的视图的引用为空,并在那里检查为null)。

Picasso是一个图像加载库,它有一种方法可以在您创建新请求时取消预览视图请求,这基本上是在列表视图中滚动并且视图被回收时发生的情况。