我已经实现了一个自己的下载器,但似乎他没有使用他已经检索过的缓存中的图像。我的初始化:
private void initImageLoader() {
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
.imageDownloader(new SocketDownloader(this))
.memoryCacheSizePercentage(25)
.writeDebugLogs()
.build();
ImageLoader.getInstance().init(config);
}
这是我在logcat中找到的:
01-10 11:47:26.899: D/ImageLoader(2345): Start display image task [socket://images/test-
icon-1.png_53x53]
01-10 11:47:26.899: D/ImageLoader(2345): Load image from network [socket://images/test-
icon-1.png_53x53]
01-10 11:47:26.899: D/Request(2345): request {"path":"images\/test-
icon-1.png","action":"getimage","actionid":0}
01-10 11:47:28.719: D/ImageLoader(2345): Subsample original image (200x200) to 100x100
(scale = 2) [socket://images/test-icon-1.png_53x53]
01-10 11:47:28.729: D/ImageLoader(2345): ImageAware is reused for another image. Task is
cancelled. [socket://images/test-icon-1.png_53x53]
01-10 11:47:28.839: D/ImageLoader(2345): Start display image task [socket://images/test-
icon-1.png_53x53]
01-10 11:47:28.839: D/ImageLoader(2345): Load image from network [socket://images/test-
icon-1.png_53x53]
01-10 11:47:28.839: D/Request(2345): request {"path":"images\/test-
icon-1.png","action":"getimage","actionid":0}
在nexus 7上运行,它应该有足够的堆来实际操作2个图像。感谢您回复有用的提示。
答案 0 :(得分:0)
正如我在日志中看到的那样,在图像加载过程中取消了上一个任务。因此,图像加载被中断,因为ImageView被重用了。您似乎滚动列表,icon-1
离开屏幕。然后滚动并再次显示icon-1
但它没有缓存在内存中,因为它没有完全下载(任务被中断)。所以ImageLoader再次开始加载。
所以没关系。
BTW我建议在磁盘上启用缓存。它可以防止多余的下载。