关于fresco的使用之--CacheKey获取本地缓存

来源:互联网 发布:mybatis怎么打印sql 编辑:程序博客网 时间:2024/06/05 09:01

最近自己做了一个app涉及到分享图片以及gif文件,查看过多个框架最终决定使用Facebook的fresco框架,功能很强大,具体可以看git链接https://github.com/desmond1121/Fresco-Source-Analysis。关于Fresco的说明不多说,这里主要说一下获取本地缓存:

我们如果适用QQ分享的话,会发现需要我们传入一个本地图片的url,使用Fresco初始化的时候设置本地缓存规则:

DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder()                .setBaseDirectoryPath(Environment.getExternalStorageDirectory().getAbsoluteFile())                .setBaseDirectoryName(Constants.CACHE_DIRECTORY)                .setMaxCacheSize(100 * ByteConstants.MB)                .setMaxCacheSizeOnLowDiskSpace(50 * ByteConstants.MB)                .setMaxCacheSizeOnVeryLowDiskSpace(30 * ByteConstants.MB).build();
会自动在手机本地或者SD卡生成缓存文件夹,并且会设置最大缓存空间然后我们就可以根据CacheKey来获取缓存文件路劲,从而实现分享,具体代码:

imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.parse(url)).build();                CacheKey cacheKey= DefaultCacheKeyFactory.getInstance()                        .getEncodedCacheKey(imageRequest);                BinaryResource resource = ImagePipelineFactory.getInstance()                        .getMainDiskStorageCache().getResource(cacheKey);                final File file=((FileBinaryResource)resource).getFile();

这里获取的是File,至于File如何获取uri就很easy了(file.toURI())。

0 0
原创粉丝点击