一、使用方式:
// 下面兩個依賴包可選,根據需求二選一即可,
compile 'com.ladingwu.library:fresco:0.0.9'
compile 'com.ladingwu.library:glide:0.0.9'
// 這個是必須的
compile "com.ladingwu.library:imageloader-framework:0.0.9"
二、初始化
// 初始化代碼需要在Application中完成
ImageLoaderConfig config = new ImageLoaderConfig
// .Builder(LoaderEnum.FRESCO, new FrescoImageLoader())
.Builder(LoaderEnum.GLIDE,new GlideImageLocader())
// .Builder(LoaderEnum.UIL,new UilImageLoader())
.maxMemory(5 * 1024 * 1024L) // 單位為Byte
.build();
ImageLoaderManager.getInstance().init(this, config);
三、三個庫的使用比較
前置條件
1、使用uisdk框架中 recycleview 加載
2、加載100個地址,地址指向的文件相同,圖片大小:101kb
3、限速60kb
Imageloader:
網絡下載且展示(16張圖片):12.5秒
本地加載且展示(16張圖片):0.8秒
幀率:54幀
快速滾動到底顯示當前屏:很慢
glide:
網絡下載且展示(16張圖片):12.5秒
本地加載且展示(16張圖片):0.7秒
幀率:52幀
快速滾動到底顯示當前屏:很慢
fresco:
網絡下載且展示(16張圖片):12秒
本地加載且展示(16張圖片):0.6秒
快速滾動幀率:56幀
快速滾動到底顯示當前屏:比Imageloader、glide快三倍
結論:加載速度、幀率和內存都是fresco更勝一籌,所以建議借鑒或者使用fresco。
fresco的優勢:
1、5.0以下圖片加載使用Android系統匿名共享內存(Anonymous Shared Memory),可以減少堆內存溢出問題和提高性能,提高性能的原因是Android系統匿名共享內存是手動申請手動釋放減少垃圾回收器的工作
2、圖片加載隊列管理的更加合理,不在當期屏的view則將對應的任務進行移除
3、根據不同系統版本使用不一樣的解碼器,提高圖片解碼效率
4、內存緩存策略增加未解碼緩存,減少磁盤讀寫次數