我正在寻找Android中的异步图像加载和缓存库.我打算使用Picasso,但我发现Universal Image Loader在GitHub上更受欢迎.有谁知道这两个图书馆?优点和缺点的摘要会很棒.
(我的所有图像都在本地磁盘上,因此我不需要联网,因此我认为Volley不合适)
解决方法:
更新于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.
总结以上是内存溢出为你收集整理的适用于Android的本地图像缓存解决方案:Square Picasso,Universal Image Loader,Glide,Fresco?全部内容,希望文章能够帮你解决适用于Android的本地图像缓存解决方案:Square Picasso,Universal Image Loader,Glide,Fresco?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)