android uil,Android UIL图片加载框架学习
单张图片加载模型
单张图片加载模型
图片加载步骤:
根据uri 定位到文件,本地磁盘文件,Assert 文件,res 资源文件,network 网络文件等;
从图片文件中获取流数据到内存,这个过程可以叫做load;
对流数据进行解码,得到原始图像数据Bitmap,这个过程叫做解码,decode ;
将bitmap设置给view 显示出来,这个过程叫display ;
注意事项:
图片解码过程中,单张图片解码出来的图片数据会达到很大,甚至导致应用出现oom的情况,需要谨慎对待;
图片显示过程中,View 的大小相对来说都是比较固定的,一张很大的图片显示在一个比较小的view 上面,显示效果不但得不到提升,而且还会消耗系统资源;
多张图片的缓存模型
多张图片加载的缓存模型
场景:
在界面的切换过程中,很多图片资源是共用的,我们的每一次图片显示都经过load,decode,display?
一张网络图片,上次从服务器下载下来了,下次用到的时候,还需要从服务器download,然后load,decode,display?
解决方案:
对于已经显示过得图片,将它存在内存中,下次再用的时候直接从内存中拿取;不用走整个的图片加载流程;
对于已经下载过得网络图片,保存在本地磁盘,再次加载的时候直接从磁盘读取,同时缓存到内存中,就不用再次从服务器下载了;
注意事项:
图片缓存在内存中,内存的大小始终是有限的,需要控制总的内存占用;
图片缓存到磁盘,磁盘的空间是有限的,需要有效的控制磁盘占用;
UIL 框架源码结构
———
UIL代码结构
流程控制:
ImageLoader 入口类;
ImageLoaderEngine 提供线程池;
XXXXXTask ,Runnable 接口实现类,具体的流程控制类,会被丢到线程池中执行 ;
具体的实现:
downloader 目录: 文件加载,从网络,本地,res ,assert 加载图片数据到内存中;
decode 目录:对加载进来的流数据进行解码,得到Bitmap 数据 ;
display 目录:对需要显示的bitmap数据进行处理,比如显示倒影,圆角等;
imageaware 目录: bitmap显示封装类,提供统一的图片数据显示方式;
listener 目录:图片加载过程的回调接口,通知流程进度和事件;
memory 目录:内存缓存模型,提供各种策略的缓存方式;
disc 目录:磁盘缓存模型,提供各种磁盘缓存方式;
类结构与加载模型对应关系
Paste_Image.png
类与流程
UIL 流程控制:ImageLoader 中生成Task ,提交到ImageLoaderEngine 中的线程池中执行;
具体的执行过程:downloader -> disc ->decode ->memory->display->imageaware ;
UIL类和流程.png
android uil,Android UIL图片加载框架学习相关推荐
- Android中常见的图片加载框架
图片加载涉及到图片的缓存.图片的处理.图片的显示等.而随着市面上手机设备的硬件水平飞速发展,对图片的显示要求越来越高,稍微处理不好就会造成内存溢出等问题.很多软件厂家的通用做法就是借用第三方的框架进行 ...
- android uil,Android UIL图片加载框架学习
单张图片加载模型 单张图片加载模型 图片加载步骤: 根据uri 定位到文件,本地磁盘文件,Assert 文件,res 资源文件,network 网络文件等: 从图片文件中获取流数据到内存,这个过程可以 ...
- Carson带你学Android:主流开源图片加载库对比(UIL、Picasso、Glide、Fresco)
前言 图片加载在 Android开发项目中十分常见 为了降低开发周期 & 难度,我们经常会选用一些图片加载的开源库,而现在图片加载开源库越来越多,我们应该选用哪种呢? 今天.我就给大家介绍 & ...
- Android高效异步图片加载框架
概述 Android高效异步图片加载框架:一个高效的异步加载显示的图片加载框架,同时具备图片压缩,缓存机制等特性. 详细 代码下载:http://www.demodashi.com/demo/1214 ...
- android教你打造独一无二的图片加载框架
前言 首先,最近是在忙okhttp没错.不过或许有人问为什么忙着okhttp怎么又扯到了图片加载上了.其实,最近想实现下断点续传以及多文件下载,但并不知道怎么搞.群里有小伙伴提出了控制线程池来实现.然 ...
- Android 框架练成 教你打造高效的图片加载框架
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/41874561 ,本文出自: [张鸿洋的博客] 1.概述 优秀的图片加载框架不要 ...
- Android图片加载框架
这篇文章主要和大家一起动手编写Android图片加载框架,从内部原理到具体实现来详细介绍如何开发一个简洁而实用的Android图片加载缓存框架,感兴趣的小伙伴们可以参考一下 开发一个简洁而实用的And ...
- Android Glide图片加载框架(四)回调与监听
文章目录 Android Glide图片加载框架系列文章 Android Glide图片加载框架(一)基本用法 Android Glide图片加载框架(二)源码解析之with() Android Gl ...
- Android Glide图片加载框架(三)缓存机制
文章目录 一.缓存简介 二.缓存用法 内存缓存方式 磁盘缓存方式 三.缓存KEY 四.内存缓存 内存缓存流程 五.磁盘缓存 磁盘缓存流程 Android Glide图片加载框架系列文章 Android ...
最新文章
- 7 个小仙女花3年时间写了一本1200页的机器学习算法手册(限时开放下载)
- iOS 11开发教程(十九)iOS11应用视图美化按钮之设置按钮的外观
- 腾讯计费全面开放,为你而来!
- ASP.NET 文件上传于下载
- 04.卷积神经网络 W2.深度卷积网络:实例探究(作业:Keras教程+ResNets残差网络)
- SpringBoot集成MyBatis-Plus框架
- C++ C++11新特性--右值引用
- kaggle房价预测特征意思_Kaggle初探--房价预测案例之数据分析
- Ubuntu快速搭建Jenkins持续集成平台
- Java重入函数_重入函数
- 各种投影灯泡的清零方法!
- ssh连接本地虚拟机
- n2n(Pear-to-pear) 内网穿透
- 开发者应该了解的移动互联网行业内幕
- leetcode 868. 二进制间距
- 聚焦人机交互智能应用领域,APISIX 在希沃网关的应用与实践
- Java LTS版本——Java 11新特性
- Flink学习笔记【巨详细!】(二)
- python面试题(六)——数据库mysql、redis篇
- 王半仙儿的日记-0010——“在人生的十字路口,没有人会迷茫,但有人会胆怯。勤奋成就万事。”