如何在 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 这样的应用程序一样快速显示?
尝试使用 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 并在您的适配器中实现它以提高性能。
我正在使用 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 这样的应用程序一样快速显示?
尝试使用 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 并在您的适配器中实现它以提高性能。