为什么要使用凌空或毕加索

时间:2015-11-10 19:28:53

标签: android android-volley picasso

好吧,到目前为止,我注意到一个真正的应用程序的两个选项,想要显示由服务器上存在的图像组成的照片库:排球 picasso 。有许多有用的教程,如Internet上提供的this。但是,我的问题是我为什么要使用它们呢?仅使用ImageView s中的图片网址有什么问题吗?

编辑:根据CommonsWare的评论我的问题是为什么我们不仅仅使用ImageView.setImageURI或类似的方法?

2 个答案:

答案 0 :(得分:2)

我没有使用过凌空,但我使用过毕加索。与原始URL相比,一些好处包括:

  • 自动重新采样原始图像数据以适合您需要的区域(节省RAM)
  • 如果您的视图被回收,则自动取消下载/渲染,例如当ListView滚出视图时
  • 本地缓存图片,因此不需要一直重新下载
  • 允许您在图像无法加载和/或成功加载时设置回调
  • 可能不仅仅是目前没有想到的那些

答案 1 :(得分:2)

无法直接将网址传递给ImageView。最接近的是setImageURI(),这有三个问题:

  1. 我认为它根本不会处理HTTP

  2. 即使它确实如此,正如该方法的文档所示,它在主应用程序线程上执行此操作,导致您使用NetworkOnMainThreadException

  3. 崩溃
  4. 即使你使用一些script-kiddie方法来阻止该异常,你的UI也会在下载过程中被冻结

  5. 使用an image loading library的首要原因是在后台线程上完成图片加载工作,更新ImageView(或Volley's案例中的NetworkImageView)图像准备好了。其中许多库提供了其他有用的功能,在您链接到的博客文章中以及此处的其他答案中进行了概述。