關於fresco的使用之--CacheKey獲取本地快取
阿新 • • 發佈:2019-01-25
最近自己做了一個app涉及到分享圖片以及gif檔案,檢視過多個框架最終決定使用Facebook的fresco框架,功能很強大,具體可以看git連結https://github.com/desmond1121/Fresco-Source-Analysis。關於Fresco的說明不多說,這裡主要說一下獲取本地快取:
我們如果適用QQ分享的話,會發現需要我們傳入一個本地圖片的url,使用Fresco初始化的時候設定本地快取規則:
會自動在手機本地或者SD卡生成快取資料夾,並且會設定最大快取空間然後我們就可以根據CacheKey來獲取快取檔案路勁,從而實現分享,具體程式碼: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();
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())。