如何在GridView中最优化使用Picasso?

4

我正在使用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 时,Picasso 总是从磁盘获取图像(蓝色调试指示器),而不是从内存中获取。
这是可以预料的,但我想通过更快地加载缩略图或图像来优化 UX。
如果你滚动 GridView 并等待磁盘获取完成,那么“性能”就会特别差。
我应该尝试哪些方法来优化 Picasso 加载,以便本地内容可以像 QuickPic 这样的应用程序一样快速显示? 这是我的简化的适配器代码(非常简单)。

请展示您的适配器代码。 - Saqueib
1个回答

6
尝试使用Glide。它应该比Picasso更快且更节省内存。而且,代码与Picasso类似,所以您不需要进行太多更改。 示例代码:
Glide.with(mContext)
    .load(mCameraImages.getUris().get(position))
    .error(android.R.drawable.ic_dialog_alert)
    .centerCrop()
    .into(view);

查看此Glide vs Picasso文章,了解两者之间的详细差异。

还要查看此使用ViewHolder模式提高性能,了解ViewHolder并在适配器中实现以增加性能。


谢谢,我会尝试的。实际上,在尝试Fresco时,我也使用了ViewHolder模式。高阶效果来自于滚动时从磁盘加载与从内存加载的区别,虽然我怀疑这可能是由于磁盘队列积压造成的。 - Mike Knoop
1
刚试了一下,Glide的默认GridView性能比Picasso要好得多,而且不需要任何调整。 - Mike Knoop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接