android自定义图片缓存,适用于Android的本地图像缓存解决方案:Squ...

更新于2018年9月:几年后,我需要与本地图像缓存解决方案几乎相同的东西.这一次,UIL尚未积极开发.我比较了流行的库,结论很简单:只需使用Glide.它功能强大且可配置.多年前我不得不分叉并对UIL进行更改. Glide支持我的所有用例,包括缓存策略和使用自定义键的多级分辨率缓存.只需使用Glide!

Koushik Dutta的比较主要是速度基准.他的帖子只触及了非常基本的东西,并不是特定于本地图像.在我提出问题之后,我想与毕加索和UIL分享我的经历. Picasso和UIL都可以加载本地图像.我第一次尝试Picasso并且很开心,但后来我决定切换到UIL以获得更多自定义选项.

毕加索:

> Picasso流畅的界面很不错.但是,随着“with”,“into”,“load”的跳跃,你实际上并不知道幕后背后是什么.这让人感到困惑.

> Picasso允许您指定确切的目标尺寸.当你遇到内存压力或性能问题时,它很有用,你可以牺牲一些图像质量来提高速度.

>图像在其键中以大小缓存,当您显示不同大小的图像时,它非常有用.

>您可以自定义内存缓存大小.但它的光盘缓存仅适用于http请求.对于本地图像,如果您关心加载速度,最好有一个缩略图磁盘缓存,这样您就不必每次都为图像读取几个MB. Picasso没有这种机制调整大小并在屏幕上保存缩略图.

> Picasso不公开对其缓存实例的访问. (当你第一次配置Picasso并保持它时,你可以抓住它……).

>有时您希望将图像异步读取到侦听器返回的位图中.令人惊讶的毕加索没有那个. “fetch()”不会传回任何东西. “get()”用于同步读取,“load()”用于异步绘制视图.

> Picasso在主页上只有一些简单的例子,你必须阅读无序的javadoc以获得高级用法.

UIL:

> UIL使用构建器进行自定义.几乎所有东西都可以配置.

> UIL不允许您指定要加载到视图中的大小.它使用一些基于视图大小的规则.它没有毕加索那么灵活.我无法加载较低分辨率的图像以减少内存占用. (编辑:通过在源代码中添加ImageSize参数并绕过视图大小检查,可以轻松修改此行为)

> UIL提供可自定义的光盘缓存,您可以使用它来缓存指定大小的缩略图.但它并不完美.这里是details.(编辑:如果你关心速度并想要多级别的缩略图缓存,就像我的情况一样,你可以修改源代码,让磁盘缓存使用“memoryKey”,并使其对大小敏感)

> UIL默认在内存中缓存不同大小的图像,并且可以在配置中关闭它.

> UIL公开您可以访问的后备内存和磁盘缓存.

> UIL提供了灵活的方法来获取位图或加载到视图.

> UIL在文档方面更好. UIL在Github页面上给出了详细的用法,并且有一个链接的教程.

我建议从Picasso开始,如果你需要更多的控制和定制,请选择UIL.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值