抛出OutOfMemoryError“无法分配31961100字节分配4194304空闲字节和27MB直到OOM

时间:2015-03-25 05:35:31

标签: android

我正在从JSon将图像加载到图像视图中。 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

1 个答案:

答案 0 :(得分:4)

你应该在Picasso中使用方法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);