关于ZAKER 融媒体解决方案 合作 加入

适用于 Android 的本地图像缓存解决方案:Squ.

CocoaChina 09-19

我正在寻找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.

以上内容由"CocoaChina"上传发布 查看原文
相关标签 毕加索android

觉得文章不错,微信扫描分享好友

扫码分享