我正在尝试显示包含大量(远程)图像的列表视图。我正在尝试使用 volley 来完成这项任务。
Volley 有点效果,但还不够好。在 ImageLoader.get volley 中有如下一段代码:
final String cacheKey = getCacheKey(requestUrl, maxWidth, maxHeight);
// Try to look up the request in the cache of remote images.
Bitmap cachedBitmap = mCache.getBitmap(cacheKey);
if (cachedBitmap != null) {
// Return the cached bitmap.
ImageContainer container = new ImageContainer(cachedBitmap, requestUrl, null, null);
imageListener.onResponse(container, true);
return container;
}
然而,getCacheKey 会产生一个像这样的键:
/**
* Creates a cache key for use with the L1 cache.
* @param url The URL of the request.
* @param maxWidth The max-width of the output.
* @param maxHeight The max-height of the output.
*/
private static String getCacheKey(String url, int maxWidth, int maxHeight) {
return new StringBuilder(url.length() + 12).append("#W").append(maxWidth)
.append("#H").append(maxHeight).append(url).toString();
}
即它将一些“元数据”如宽度和高度附加到键。
这个键永远不会产生命中,如果图像不在 L1 缓存中,它会在线获取。当在线获取图像时,它会保存在磁盘缓存中,但 Volley 将其保存为 URL(并且只有 URL)作为键。
这是预期的行为吗?我错过了什么吗?