我正在从JSon将图像加载到 ImageView 。 JSon仅带来图像URL的路径。我正在使用毕加索设置值。但它会为某些图像提供错误,而对于其余图像,它可以正常工作。

Picasso.with(context).load(rowItem.getProductImages().get(0)).into(holder.productImageView);

错误是:
 2771-2793/com.koove E/art﹕ Throwing OutOfMemoryError "Failed to allocate a 31961100 byte allocation with 4194304 free bytes and 27MB until OOM"
03-25 09:53:23.666    2771-2793/com.koove D/skia﹕ --- decoder->decode returned false

最佳答案

您应该在毕加索中使用fit()方法,该方法将测量目标ImageView的尺寸,并在内部使用resize()将图像尺寸减小到ImageView的尺寸。

优点是图像的分辨率尽可能低,而不会影响其质量。较低的分辨率意味着要保留在缓存中的数据更少。

Picasso.with(context).load(rowItem.getProductImages().get(0)).fit().into(holder.productImageView);

如果仍然有OOM,请使用内存策略删除缓存。
Picasso.with(context).load(rowItem.getProductImages().get(0)).memoryPolicy(MemoryPolicy.NO_CACHE).fit().into(holder.productImageView);

关于android - Throwing OutOfMemoryError“未能分配31961100字节分配,其中包含4194304可用字节和27MB,直到OOM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29248192/

10-12 02:43