1. 程式人生 > >關於fresco的使用之--CacheKey獲取本地快取

關於fresco的使用之--CacheKey獲取本地快取

最近自己做了一個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())。