一、使用方式:
// 下面两个依赖包可选,根据需求二选一即可, 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个地址,地址指向的文件相同,图片大小:101kb3、限速60kbImageloader:网络下载且展示(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、内存缓存策略增加未解码缓存,减少磁盘读写次数