我正在从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
答案 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);