如何手动将本地文件添加到fresco图像缓存

时间:2016-04-11 10:24:32

标签: android fresco

我使用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应用程序客户端仍然需要再次下载图像。钥匙有问题吗?壁画如何使用键来跟踪其缓存目录中的图像?

0 个答案:

没有答案