在android“Android-Universal-Image-Loader”中,如果ImageView被重用于另一个任务,为什么要取消当前任务

时间:2013-04-08 13:07:23

标签: task universal-image-loader

在类LoadAndDisplayImageTask中,有一个名为“checkTaskIsNotActual”的函数。并且有一个注释“如果ImageView被重用于另一个任务,那么当前任务应该被取消”。但我不知道为什么他这样做。如果知道了这个原因,任何朋友都会告诉我答案。

1 个答案:

答案 0 :(得分:1)

您的观看次数来自Adapter 为了保留内存并提高性能,适配器将为不同的项重用相同的视图(例如图像视图)(即项目1上的ImageView与项目20中的ImageView是相同的内存对象。因此,适配器将初始化ImageView目标只有一次,分别改变第1项和第20项的ts属性。

现在假设您要在第1项的ImageView中显示img1.jpg,在第20项的图像视图中显示img20.jpg。

你的适配器很可能会触发两者的显示图像,但由于它们共享相同的ImageView(即屏幕上只能看到其中一个)“ checkTaskIsNotActual “将停止img1.jpg显示在第20项,因为当生成第20项时, 重新使用ImageView

我实际上也遇到了这个问题。 因为我的列表中有很多项目,并且大多数项目取消了显示任务,因为图像视图被重复使用。 这对我来说是好的,但似乎存在内存泄漏,并且在尝试使用过多的重用视图时,堆将超出预算。