多くの(リモート)画像を含むリストビューを表示しようとしています。私はその仕事にボレーを使おうとしています。
ボレーはある程度機能しますが、十分ではありません。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 のみ) をキーとして保存します。
これは予想される動作ですか?何か不足していますか?