XUtils的BitmapUtils实现分析:
来源:互联网 发布:matlab最优化工具箱 编辑:程序博客网 时间:2024/05/17 01:04
调用:BitmapUtils.display(ImageView, url);
public <T extends View> void display(T container, String uri, BitmapDisplayConfig displayConfig, BitmapLoadCallBack<T> callBack) { if (container == null) { return; } // Optimize Max Size BitmapSize size = displayConfig.getBitmapMaxSize(); displayConfig.setBitmapMaxSize(BitmapCommonUtils.optimizeMaxSizeByView(container, size.getWidth(), size.getHeight())); // start loading 这里为空实现 callBack.onPreLoad(container, uri, displayConfig); // find bitmap from mem cache. 缓存为HashMap<url, Bitmap>缓存图片信息 Bitmap bitmap = globalConfig.getBitmapCache().getBitmapFromMemCache(uri, displayConfig); if (bitmap != null) {
// 有缓存直接取缓存数据 callBack.onLoadStarted(container, uri, displayConfig); callBack.onLoadCompleted( container, uri, bitmap, displayConfig, BitmapLoadFrom.MEMORY_CACHE); } else if (!bitmapLoadTaskExist(container, uri, callBack)) {// 没缓冲启动加载Bitmap任务 final BitmapLoadTask<T> loadTask = new BitmapLoadTask<T>(container, uri, displayConfig, callBack); // get executor PriorityExecutor executor = globalConfig.getBitmapLoadExecutor(); File diskCacheFile = this.getBitmapFileFromDiskCache(uri); boolean diskCacheExist = diskCacheFile != null && diskCacheFile.exists(); if (diskCacheExist && executor.isBusy()) { executor = globalConfig.getDiskCacheExecutor(); } // set loading image Drawable loadingDrawable = displayConfig.getLoadingDrawable(); callBack.setDrawable(container, new AsyncDrawable<T>(loadingDrawable, loadTask)); // 线程池中加载任务 loadTask.executeOnExecutor(executor); }}
总结:BitmapUtils加载数据核心采用一级缓存,如果内存中有数据则直接从内存中取出图片,否则网络加载
1 0
- XUtils的BitmapUtils实现分析:
- XUtils BitmapUtils 源码分析
- Xutils 中BitmapUtils工具类的源码分析
- android-----XUtils框架之BitmapUtils源码分析
- Xutils——BitmapUtils单例实现
- Xutils的bitmapUtils的缓存理解
- Xutils的bitmapUtils的缓存理解
- Xutils的bitmapUtils的缓存理解
- xUtils 中的BitmapUtils的全面注释
- xUtils中BitmapUtils模块的使用实例
- xutils的bitmapUtils添加请求头
- android-----XUtils框架之BitmapUtils加载照片实现
- xUtils系列之BitmapUtils
- 【Xutils-框架 BitmapUtils】解析!!!!!!!!!!!!!!!!!!!!!!!!
- Xutils之BitmapUtils使用
- xUtils系列之BitmapUtils
- android 项目学习随笔八(xUtils的BitmapUtils模块)
- xUtils 中的BitmapUtils 全面注释
- Synchronous Chat Client &Server
- [SCOI2005]繁忙的都市
- 初级UnityDemo全纪录(二):代码篇①
- java的锁机制
- 细说JVM系列:JVM对象的创建、内存布局、访问
- XUtils的BitmapUtils实现分析:
- 寻找最大的K个数
- java笔记--day09--多态和继承的微弱区别
- npm 私服补充
- Android Studio汉化教程
- Maven与Mybatis集成时的问题
- java中native是关键字
- [Android] Start your activity after boot completed
- 连续子数组的最大和