我使用fresco作为我的app图片加载器。
我的应用客户端将本地图像文件上传到远程服务器。上传成功后,为了节省带宽并避免再次从远程服务器下载图像,我使用以下方法手动将本地文件添加到fresco图像缓存。
public static void setCachedImageOnDisk(String key, File file) {
if (key == null || file == null) {
return;
}
CacheKey cacheKey = DefaultCacheKeyFactory.getInstance().getEncodedCacheKey(ImageRequest.fromUri(key));
FileInputStream inputStream = null;
try {
inputStream = new FileInputStream(file);
Fresco.getImagePipelineFactory().getMainDiskStorageCache()
.insert(cacheKey, WriterCallbacks.from(inputStream));
Fresco.getImagePipelineFactory().getSmallImageDiskStorageCache()
.insert(cacheKey, WriterCallbacks.from(inputStream));
Log.d(TAG, "set key on disk " + key);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
上面的key
是图片的完整网址。从调试输出,它是一个有效的图像URL。但它不起作用,我的Android应用程序客户端仍然需要再次下载图像。钥匙有问题吗?壁画如何使用键来跟踪其缓存目录中的图像?