位置: 编程技术 - 正文

android 开源框架Universal-Image-Loader解析(安卓开发框架mvvm)

编辑:rootadmin

推荐整理分享android 开源框架Universal-Image-Loader解析(安卓开发框架mvvm),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:安卓开源ui框架,android常用开源框架,安卓 开源框架,安卓 开源框架,android开发框架,安卓开发框架mvvm,android开发框架,android开发框架mvp,内容如对您有帮助,希望把文章链接给更多的朋友!

最近要在公司分享东西,很多项目中用到Universal-Image-Loader这个开源框架,没有太多的进程调度,没有各种内存读取控制机制、没有各种异常处理,一起学习一下

1.UIL原理

a.UI:请求数据,使用唯一的Key&#;索引Memory Cache中的Bitmap。

b.内存缓存:缓存搜索,如果能找到Key&#;对应的Bitmap,则返回数据。否则执行c。

c.硬盘存储:使用唯一Key&#;对应的文件名,检索SDCard上的文件。如果有对应文件,使用BitmapFactory.decode*方法,解码Bitmap并返回数据,同时将数据写入缓存。如果没有对应文件,执行d。

d.下载图片:启动异步线程,从数据源下载数据(Web)。

e.若下载成功,将数据同时写入硬盘和缓存,并将Bitmap显示在UI中。

2.UIL特征

多线程下载图片

随意配置ImageLoader

支持二级缓存

支持加载文件系统,assets,drawable等图片

支持图片下载过程的监听

。。。

特征很多,这里就不一一列举了

3.UIL解析

ImageLoaderConfiguration是针对图片缓存的全局配置,主要有线程类、缓存大小、磁盘大小、图片下载与解析、日志方面的配置。

ImageLoader是具体下载图片,缓存图片,显示图片的具体执行类,它有两个具体的方法displayImage(...)、loadImage(...),但是其实最终他们的实现都是displayImage(...)

DisplayImageOptions用于指导每一个Imageloader根据网络图片的状态(空白、下载错误、正在下载)显示对应的图片,是否将缓存加载到磁盘上,下载完后对图片进行怎么样的处理。

4.ImageLoaderConfiguration配置

使用createDefault()方法创建了一个默认的ImageLoaderConfifuration

1.开启内存缓存,压缩的图片大小为屏幕的宽和高

2.开启硬盘缓存,不压缩图片

3.默认的线程池为3

4.允许缓存不同尺寸的图片

5.默认使用FIFO处理任务

以上对应默认配置,如果默认配置不满足你的要求,可以自行修改

5.DisplayImageOptions配置(根据需求自行修改)

android 开源框架Universal-Image-Loader解析(安卓开发框架mvvm)

1.根据网络情况设置图片状态(空白,下载错误,正在下载)

2.图片加载完成后是否重置view

3.设置下载延迟时间

4.是否缓存到内存或者硬盘

5.下载完成后对图片的处理

6.ImageLoader

ImageLoader有两个具体的方法,loadImage()和displayImage(),在项目中一般直接使用displayImage()方法,比较方便

7.加载其他来源的图片

加载其他来源的图片时,只需要把url改掉

加载content provider图片String contentprividerUrl = “ assetsUrl = Scheme.ASSETS.wrap("image.png");

加载drawable图片String drawableUrl = Scheme.DRAWABLE.wrap("R.drawable.image")

8.UIL内存缓存策略

1. 只使用的是强引用缓存

LruMemoryCache(这个类就是这个开源框架默认的内存缓存类,缓存的是bitmap的强引用,下面我会从源码上面分析这个类)

2.使用强引用和弱引用相结合的缓存有

UsingFreqLimitedMemoryCache(如果缓存的图片总量超过限定&#;,先删除使用频率最小的bitmap)

LRULimitedMemoryCache(这个也是使用的lru算法,和LruMemoryCache不同的是,他缓存的是bitmap的弱引用)

FIFOLimitedMemoryCache(先进先出的缓存策略,当超过设定&#;,先删除最先加入缓存的bitmap)

LargestLimitedMemoryCache(当超过缓存限定&#;,先删除最大的bitmap对象)

LimitedAgeMemoryCache(当 bitmap加入缓存中的时间超过我们设定的&#;,将其删除)

3.只使用弱引用缓存

WeakMemoryCache(这个类缓存bitmap的总大小没有限制,唯一不足的地方就是不稳定,缓存的图片容易被回收掉)

9.UIL硬盘缓存策略

FileCountLimitedDiscCache(可以设定缓存图片的个数,当超过设定&#;,删除掉最先加入到硬盘的文件)LimitedAgeDiscCache(设定文件存活的最长时间,当超过这个&#;,就删除该文件)

TotalSizeLimitedDiscCache(设定缓存bitmap的最大&#;,当超过这个&#;,删除最先加入到硬盘的文件)

UnlimitedDiscCache(这个缓存类没有任何的限制)

注:UIL默认内存缓存使用的LruMemoryCache,默认硬盘缓存使用的是UnlimitedDiscCache

.UIL如何避免OOM

1.减少线程池的个数,在ImageLoaderConfiguration中的(.threadPoolSize)中配置,默认为3

2.在DisplayImageOptions选项中配置bitmapConfig为Bitmap.Config.RGB_,因为默认是ARGB_, 使用RGB_会比使用ARGB_少消耗2倍的内存

3.在ImageLoaderConfiguration中配置图片的内存缓存为memoryCache(new WeakMemoryCache()) 或者不使用内存缓存

4.在DisplayImageOptions选项中设置.imageScaleType(ImageScaleType.IN_SAMPLE_INT)或者imageScaleType(ImageScaleType.EXACTLY)

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android Chronometer(定时器) 毁灭博客园首页新闻新随笔联系管理订阅随笔-文章-0评论-Android控件之Chronometer(定时器)Chronometer是一个简单的定时器,你可以给它一个开始时间

在android中做一个竖着的seekbar效果 工作繁忙,总想有机会停下来喘口气,整理一下思路,做一些积累,但是这样的机会很少。要做android的界面,基础的要求是熟悉那些内置的组件(prebuil

使得音乐播放静音及恢复音乐 一.使得音乐播放静音privatevoidsilence(){AudioManageraudioManager=(AudioManager)getContext().getSystemService(Context.AUDIO_SERVICE);audioManager.setStreamMute(AudioManager.STREAM_MUSIC,true);

标签: 安卓开发框架mvvm

本文链接地址:https://www.jiuchutong.com/biancheng/371050.html 转载请保留说明!

上一篇:Android中摇一摇效果的实现(手机摇一摇插件)

下一篇:Android Chronometer(定时器)

  • 个体户要交什么税,怎样收
  • 借款合同印花税最新政策2023年
  • 下列哪些收入为免税收入
  • 偷税漏税逃税是什么意思
  • 比较优先股和普通股
  • 零申报还要抄税吗
  • 审计调整分录做在哪一年
  • 应付账款暂估余额
  • 税务局代开的劳务费发票可以入账吗
  • 房地产土地增值税的算法
  • 土地投资入股是否需要发票作为企业所得税税前扣除凭证
  • 货到票未到怎么入账
  • 收到单位预交卖材料款如何做会计分录?
  • 所得税汇算清缴分录怎么做
  • 天猫企业支付宝怎么提现
  • 外贸企业购买生产车辆
  • 代扣代缴个人所得税现金流计入哪里
  • 怎么开个体工商户
  • 重置申报清册是什么意思
  • 外币折算差额计入什么科目
  • 两家公司合租一个房子
  • 个体户怎么给供货公司
  • 企业注销后注册资金取出需要交税吗
  • 进项认证转出 会计得入账吗
  • 公司面临清算,外包企业的员工怎么处理?
  • 在window中
  • 企业收到的罚款收入属于什么科目
  • cpu天梯图,最新
  • 在线网速测试需要付费吗
  • centos7安装php7.3
  • macbookair邮件
  • php调用远程桌面
  • 商品购进核算
  • 体积最小的u盘
  • pc端微信扫码支付
  • 库存商品转在建工程 增值税
  • php怎么添加背景图片
  • thinkphp框架介绍
  • php 集成环境
  • 应收账款占用资金的应计利息变动额
  • 融资租入的办公楼
  • googlelabs
  • tracet命令
  • 采购和销售都做的叫什么
  • 补提企业所得税财务报表应该如何调整
  • 国际货运代理公司个人货物
  • 实发工资总额怎么算
  • 新收入准则修订的目的
  • 建筑施工企业收入怎么确认
  • 技术人员的工资计入什么费用
  • 金税盘减免税款月末如何结转
  • 《中华人民共和国治安管理处罚法》
  • 现金流量表年报本期金额和上期金额
  • 小规模纳税人都是3%吗
  • 小规模纳税人自行开具增值税专用发票税率
  • 应交增值税结转账务处理
  • 电商刷单返现如何做账务处理合适?
  • 应付账款清账账务处理
  • 交城市维护建设税减半征收吗?
  • 减少实收资本会影响资产吗
  • 企业会计核算中,对账的内容主要包括
  • 营改增后税率表
  • 上月留抵税怎么算应纳税额
  • 研发费用的会计处理对公司经营成果的影响
  • 园林绿化公司的税率是多少
  • 个税基数和社保有关系吗
  • 公司打款账号模板图片
  • 以前年度调整
  • 职工薪酬的范围及内容
  • win10 电池报告
  • pages怎么标记
  • win10怎么关闭windowsdefender
  • 如何配置sendmail
  • 麒麟Linux系统怎么进入图形化界面
  • angular scope
  • 转换什么
  • 百度关键字搜索员是干嘛的
  • python读取大txt文件
  • android遇到的难题,怎么解决的
  • 如何在税务系统增加开票人员
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设