如何在 GridView 中最好地优化 Picasso?

How do I best optimize Picasso in a GridView?

我正在使用 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 只是一个 URI 列表,来自本地 mediaStore。

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

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

如果您向下滚动 GridView 并且必须等待 ~seconds 才能完成磁盘提取,"performance" 尤其糟糕。

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

Here is my reduced adapter code(很简单)

尝试使用 Glide。它应该比 Picasso 更快且更节省内存。代码也与 Picasso 类似,因此您不需要对代码做太多更改。

示例代码:

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 并在您的适配器中实现它以提高性能。