【问题标题】:How do I best optimize Picasso in a GridView?如何在 GridView 中最好地优化 Picasso?
【发布时间】:2015-05-29 00:54:03
【问题描述】:

我正在使用 Picasso (2.5.2) 通过适配器将本地 content:// 图像加载到 3 列 GridView 中。

Picasso
    .with(mContext)
    .load(mCameraImages.getUris().get(position))
    .error(android.R.drawable.ic_dialog_alert)
    .fit()
    .centerCrop()
    .into(view);

在我的特殊情况下,mCameraImages 只是一个来自本地 mediaStore 的 URI 列表。

我发现当我加载 GridView 时,Picasso 总是从磁盘(蓝色调试指示器)而不是内存中获取图像。

这是意料之中的,但我想通过更快地加载缩略图或图像来优化用户体验。

如果您向下滚动 GridView 并且必须等待大约几秒钟才能完成磁盘提取,“性能”会特别差。

我可以尝试哪些方法来优化 Picasso 加载,以便本地内容可以像 QuickPic 这样的应用一样快速显示?

Here is my reduced adapter code(很简单)。

【问题讨论】:

  • 请出示您的适配器代码

标签: android picasso


【解决方案1】:

尝试使用Glide。它应该比毕加索更快,内存效率更高。代码也与毕加索相似,所以你不需要对代码做太多改动。

示例代码:

Glide.with(mContext)
    .load(mCameraImages.getUris().get(position))
    .error(android.R.drawable.ic_dialog_alert)
    .centerCrop()
    .into(view);

查看这篇Glide vs Picasso 文章,了解两者之间的详细区别。

还可以查看Improving Performance with the ViewHolder Pattern 以了解 ViewHolder 并在您的适配器中实现它以提高性能。

【讨论】:

  • 谢谢,会试试。在尝试 Fresco 时,我实际上也使用了 ViewHolder 模式。高阶效果来自于滚动时从磁盘加载而不是从内存加载,尽管我怀疑这可能是由于备份的磁盘队列造成的。
  • 刚试了一下,默认的 Glide GridView 性能比 Picasso 提升了一大步,没有任何调整。
猜你喜欢
  • 1970-01-01
  • 2021-06-06
  • 2019-08-21
  • 2012-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多