當前位置:首頁 » 文件管理 » fresco本地緩存

fresco本地緩存

發布時間: 2023-05-29 18:53:52

㈠ frescocache是什麼文件

你好,很高興為你解答

fresco cache
壁畫的緩存

希望我的回答對你有幫助,滿意請採納。

㈡ Android圖片框架對比

對比現在主流圖片框架的優勢和缺點,在實際項目中如何選擇適合自己的框架;

Glide、Fresco、Picasso、ImageLoader
共同優點:

以上名詞介紹

在分析他們的差異、優缺點之前,我們先了解圖片緩存通用的概念:

以上概念在不同框架之間可能不同,比如Displayer在ImageLoader中叫做ImageAware,在Picasso和Glide中叫做Target。

以上為Glide的總體設計圖。
整個庫分為RequestManager(請求管理器)、Engine(數據獲取引擎)、Fetcher(數據獲取器)、MemoryCache(內存緩存)、DiskLRUCache(本地緩存)、Transformation(圖片處理)、Encoder(編碼處理)、Registry(圖片類型以及解析器配置)、Target(目標)等模塊。

簡單流程: Glider收到載入及顯示資源任務,創建Request並將它交給RequestManager,Request啟動Engine去數據源獲取資源,得到資源後通過Transformation處理後交給Target.
Glide依賴DiskLRUCache、GifDecoder等開源庫去完成本地緩存和Gif圖片解密工作;

為Bitmap 維護一個BitmapPool對象池, 對象池的主要目的是通過減少大對象的分配以重用來提高性能!

缺點
①圖片質量低:因為機制不同,速度快,但是圖片的質量降低了RGB565;
②多尺寸緩存導致內存和磁碟佔用多:根據ImageView大小來緩存,可能會導致一張圖片可能根據展示情況來緩存不同尺寸的幾份;

擴展理解參考: https://www.jianshu.com/p/1ab5597af607

以上為Picasso的總體設計圖。
整個庫分為Dispatcher、RequestHandler以及Downloader、PicassoDrawable等模塊。
簡單流程: Picasso收到載入顯示圖片任務後,創建Request並將它交給Dispatcher,Dispatcher分發任務到具體RequestHandler,任務通過MemoryCache及Handler(數據獲取介面)獲取圖片,圖片獲取成功後通過PicassoDrawable顯示到Target中;

上面Data的File system部分,Picasso沒有自定義本地緩存的介面,默認使用http的本地緩存,API19以上使用okhttp,一下使用UrlConnection,所以如果需要自定義本地緩存就需要自定義Downloader;

缺點 :載入速度沒有其他框架快;
特點 :只緩存一個全尺寸的圖片,根據需求的大小在壓縮轉換;

以上為Fresco的總體設計圖
整個庫分為UI:DraweeView(View控制項)、Drawable(圖片數據)、DraweeController(圖片控制器)、DraweeHiierarchy(圖片體系);Core:DataSource(數據源)、ImagePipeline(圖像管道)、Procer(生產者)、ProcerFacotry(生產工廠)、Subcriber(訂閱)、Supplier(供應者)、Consumer(消費者);IO/Data:MemoryCache(內存緩存)、Network、DiskCache(磁碟緩存)、Recourse(本地資源)

簡單流程: 從上面的結構可以看出,fresco主要採用了工廠+建造者的模式實現功能,邏輯劃分比較清楚;Fresco框架整體是一個MVC模式,DrawableView--->View用來顯示頂層視圖、DrawableController--->Control控制載入圖片的配置 事件的分發、DrawableHierarchy--->Model 用於存儲和描述圖片信息,同時也封裝了一些圖片的顯示和視圖層級的方法;ImagePipeline模塊負責從網路、本地文件系統、本地資源載入圖片

缺點:
①框架大,影響Apk體積;
②一定的學習成本,使用比較繁瑣,需要使用內部提供的ImageView控制項,使用起來比較復雜;

㈢ oppo手機文件夾frescov2ols.100.1是什麼用

一般是軟體緩存,沒有實在意義的文件夾可以直接刪除。

㈣ RN 圖片框架緩存機制

RN圖片框架iOS採用的是SDWebImage, 安卓採用的是Fresco

SDWebImage分為兩級緩存,內存緩存和文件緩存,其中文件緩存的策略:
1.默認保存一個星期,優先清理過期的圖片
2.清理過期圖片後,計算出未過期的緩存大小總和,並與最大的緩存空間的 1/2 作對比;
3.按時間嫌鎮最久未被訪問(或修改)的順序,對緩存數據做一個排序;
4.根據排閉者悶序結果繼續清理 時間最久遠的緩存圖片數據,直到剩餘的緩存大小 小於最大空間的1/2時,停止清理;

Fresco 分為三級緩存轎彎,bitmap緩存、未解碼圖片的內存緩存和磁碟緩存, 緩存策略:
內存緩存默認5分鍾,超過兩個小時載入的圖片就更新到磁碟緩存
磁碟緩存設有緩存上限,根據圖片佔用的磁碟大小來的,高端機型是40M,中端10M,低端2M
沒有固定的清理時間,而是按訪問時間從遠到近來清理

㈤ 如何手動清理Fresco的緩存

清理手機緩存文件,可以嘗試以下方法進行清理:
1、手機安裝一個騰訊手機管家,在健康優化裡面點一下垃圾清理,再選擇垃圾掃描,掃描完成後敬搜立即清理按完成就可以了。
2、在設置裡面可以對漏山應亮搜歷用程序進行單個清理緩存。設置-更多設置-應用程序-選擇要清理的程序-清除緩存和數據。
3、以上還無法清除干凈的話可以選擇恢復出廠設置,這樣可以清除所有數據。不過清理之前要做好備份處理,否則會導致所以數據丟失。

㈥ 怎麼查看 fresco 磁碟緩存 目錄

public class ImagePipelineConfigUtils {

//分配的可用內存
private static final int MAX_HEAP_SIZE = (int) Runtime.getRuntime().maxMemory();

//使用的緩存數量
private static final int MAX_MEMORY_CACHE_SIZE = MAX_HEAP_SIZE / 4;

//小圖極低磁碟空間緩存的最大值(特性:可將大量的小圖放到額外放在另一個磁碟空間防止大圖佔用磁碟空間而刪除了大量的小圖)
private static final int MAX_SMALL_DISK_VERYLOW_CACHE_SIZE = 20 * ByteConstants.MB;

//小圖低磁碟空間緩存的最大值(特性:可將大量的小圖放到額外放在另一個磁碟空間防止大圖佔用磁碟空間而刪除了大量的小圖)
private static final int MAX_SMALL_DISK_LOW_CACHE_SIZE = 60 * ByteConstants.MB;

//默認圖極低磁碟空間緩存的最大值
private static final int MAX_DISK_CACHE_VERYLOW_SIZE = 20 * ByteConstants.MB;

//默認圖低磁碟空間緩存的最大值
private static final int MAX_DISK_CACHE_LOW_SIZE = 60 * ByteConstants.MB;

//默認圖磁碟緩存的最大值
private static final int MAX_DISK_CACHE_SIZE = 100 * ByteConstants.MB;

//小圖所放路徑的文件夾名
private static final String IMAGE_PIPELINE_SMALL_CACHE_DIR = "ImagePipelineCacheSmall";

//默認圖所放路徑的文件夾名
private static final String IMAGE_PIPELINE_CACHE_DIR = "ImagePipelineCacheDefault";

public static ImagePipelineConfig getDefaultImagePipelineConfig(Context context) {

//內存配置
final MemoryCacheParams bitmapCacheParams = new MemoryCacheParams(
MAX_MEMORY_CACHE_SIZE,// 內存緩存中總圖片的最大大小,以位元組為單位。
Integer.MAX_VALUE,// 內存緩存中圖片的最大數量。
MAX_MEMORY_CACHE_SIZE,// 內存緩存中准備清除但尚未被刪除的總圖片的最大大小,以位元組為單位。
Integer.MAX_VALUE,// 內存緩存中准備清除的總圖片的最大數量。
Integer.MAX_VALUE);// 內存緩存中單個圖片的最大大小。

//修改內存圖片緩存數量,空間策略(這個方式有點惡心)
Supplier<MemoryCacheParams> mSupplierMemoryCacheParams = new Supplier<MemoryCacheParams>() {
@Override
public MemoryCacheParams get() {
return bitmapCacheParams;
}
};

//小圖片的磁碟配置
DiskCacheConfig diskSmallCacheConfig = DiskCacheConfig.newBuilder().setBaseDirectoryPath(context.getApplicationContext().getCacheDir())//緩存圖片基路徑
.setBaseDirectoryName(IMAGE_PIPELINE_SMALL_CACHE_DIR)//文件夾名
.setMaxCacheSize(MAX_DISK_CACHE_SIZE)//默認緩存的最大大小。
.setMaxCacheSizeOnLowDiskSpace(MAX_SMALL_DISK_LOW_CACHE_SIZE)//緩存的最大大小,使用設備時低磁碟空間。
.(MAX_SMALL_DISK_VERYLOW_CACHE_SIZE)//緩存的最大大小,當設備極低磁碟空間
.setDiskTrimmableRegistry(NoOpDiskTrimmableRegistry.getInstance())
.build();

//默認圖片的磁碟配置
DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder().setBaseDirectoryPath(Environment.getExternalStorageDirectory().getAbsoluteFile())//緩存圖片基路徑
.setBaseDirectoryName(IMAGE_PIPELINE_CACHE_DIR)//文件夾名
.setMaxCacheSize(MAX_DISK_CACHE_SIZE)//默認緩存的最大大小。
.setMaxCacheSizeOnLowDiskSpace(MAX_DISK_CACHE_LOW_SIZE)//緩存的最大大小,使用設備時低磁碟空間。
.(MAX_DISK_CACHE_VERYLOW_SIZE)//緩存的最大大小,當設備極低磁碟空間
.setDiskTrimmableRegistry(NoOpDiskTrimmableRegistry.getInstance())
.build();

//緩存圖片配置
ImagePipelineConfig.Builder configBuilder = ImagePipelineConfig.newBuilder(context)
.setBitmapsConfig(Bitmap.Config.RGB_565)
.(mSupplierMemoryCacheParams)
.setSmallImageDiskCacheConfig(diskSmallCacheConfig)
.setMainDiskCacheConfig(diskCacheConfig)
.setMemoryTrimmableRegistry(NoOpMemoryTrimmableRegistry.getInstance())
.(true);

// 就是這段代碼,用於清理緩存
NoOpMemoryTrimmableRegistry.getInstance().registerMemoryTrimmable(new MemoryTrimmable() {
@Override
public void trim(MemoryTrimType trimType) {
final double suggestedTrimRatio = trimType.getSuggestedTrimRatio();

Loger.d(String.format("onCreate suggestedTrimRatio : %d", suggestedTrimRatio));
if (MemoryTrimType.OnCloseToDalvikHeapLimit.getSuggestedTrimRatio() == suggestedTrimRatio
|| MemoryTrimType..getSuggestedTrimRatio() == suggestedTrimRatio
|| MemoryTrimType..getSuggestedTrimRatio() == suggestedTrimRatio
) {
ImagePipelineFactory.getInstance().getImagePipeline().clearMemoryCaches();
}
}
});

return configBuilder.build();
}
}

㈦ 關於fresco載入圖片的緩存設置及列表載入等

之前寫過一篇文章,是關於Glide的一些坑, Glide載入gif及本地視頻縮略圖的坑  ,因為我們公司的應用是涉及到發帖子的功能,這里用戶是可以上傳gif的,而某些文件本身就有一些問題的gif,用Glide載入不出來,上面的文章末尾說過了,所以採用了Fresco,用了Fresco,才發現坑更大啊,一點一點說吧。

首先要用到他們自己的View那些我就不重復了,功能確實強大,後面講一些可配置可不配置但是配置了會更爽的內容

1,設置緩存大小等,可以參考這個 Fresco緩存設置  ,設置了之後,再不會出現已經載入過的圖片,被自動清理了

2,列表載入圖片,一定要setResizeOptions和setOldController,如下圖

圖中的width和height不一定要很准確,比如你是Grid,但是又有間隙緩唯,那width你設置成 screenWidth/spanCount的大小就好了,滑動起來跟Glide差不多了

3,photoView,fresco貌似不能直接用photoView,沒關系,有這個 PhotoDraweeView  使用起來跟photoView差不多

4,長圖載入,我用的是 BigImageViewer  裡麵包含了放大縮埋哪差小的功能了

最後,用Fresco,我載入相冊還是照樣卡,跟Glide完全不能比,設置了setAutoPlayAnimations(false),.setBitmapsConfig(Bitmap.Config.RGB_565)都還是很卡,用的 FrescoImageLoader.java  的也是很卡,不知道有人解決了嗎彎皮

㈧ 如何手動清理Fresco的緩存

經常清理垃圾,才能保證電腦流暢。
試試騰訊電腦管家,垃圾清理和電腦加速這兩個功能是同類軟體必備的功能
清理加速,會從多方面對系統內部會產生運行阻礙的數據文件進行碎片整合,包括系統垃圾、視頻垃圾、網游垃圾、惡意插件等多方面進行清理,同時還可以進行自動清理「掃一掃」,根據需要可以進行定期清理設定。

㈨ 如何手動清理Fresco的緩存

Fresco是一個強大的系統用於在Android應用中展示圖片。它負責圖片的載入和展示,所以你不做任何事情。
Fresco能夠從轎陪纖網路中,本地存儲或本地資源載入圖片。為節省數據和亂巧CPU,它擁有三級緩存:兩級在內存中,加一個在外閉仿部存儲。
Fresco的Drawees 能夠顯示佔位符,直到你的圖片已載入,並自動顯示到圖像時到達。當圖像從屏幕消失時,它會自動釋放內存。
Fresco 支持Android 2.3 (Gingerbread) 以上的版本。

㈩ Fresco要點及優化

1.在Application中初始化,需要打開對PNG等圖片讓譽的自動縮放特性(默認只支持JPG)

2.如需對網路圖也能進行resiz處理以減少內存坦穗段開銷 ()

1.載入文件路徑不要直接直接使用 Uri.parse(),而要使用 Uri.fromFIle()。parse不會轉義文件路徑的unicode字元,導致載入失敗;

2.ResizeOptions一定盡量要設置,並且是ImageView所顯示的大小,這樣可以盡可能的縮減載入族哪的圖像尺寸,節約內存;

3.載入到BitmapCache的圖片都是帶Resize的,如果兩處載入同一個Uri,但ResizeOptions不同的話,那也是當做兩張圖片;

4.GIF圖閃動:Fresco是不在內存中緩存GIF圖的,每次顯示都是重新解碼,閃動可以設置ImageDecodeOption中的setDecodePreviewFrame(true),並不設置placeholder的圖片;

熱點內容
官式訪問 發布:2024-04-27 10:04:00 瀏覽:521
國產高配置有哪些 發布:2024-04-27 09:18:26 瀏覽:947
建行手機app忘記密碼如何修改 發布:2024-04-27 08:58:59 瀏覽:393
蟻群演算法的數學模型 發布:2024-04-27 08:58:39 瀏覽:994
androidactivity生命 發布:2024-04-27 07:33:48 瀏覽:84
win2008伺服器搭建網站 發布:2024-04-27 07:26:51 瀏覽:640
java的vector 發布:2024-04-27 07:05:00 瀏覽:204
舊電腦共享伺服器 發布:2024-04-27 06:32:21 瀏覽:339
java程序練習 發布:2024-04-27 06:24:00 瀏覽:438
sql30 發布:2024-04-27 06:22:10 瀏覽:55