使用Picasso加载大图像

时间:2017-08-18 21:04:21

标签: android performance android-imageview picasso

我试图使用Picasso加载大图像

public static final int MAX_WIDTH= 500;
public static final int MAX_HEIGHT= 500;

 Picasso.with(imageView.getContext())
                .load(Utils.imagePath(list.get(position).getImage()))
                .resize(MAX_WIDTH,MAX_HEIGHT)
                .onlyScaleDown()
                .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
                .into(imageView);

但我得到致命异常:上面代码的java.lang.OutOfMemoryError,我试图加载的图像与下面的图像完全相同

enter image description here

我应该从后端调整图像大小还是我可以做些什么来避免这种情况?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

在你的适配器中使用它(似乎是),因为适配器多个绑定视图,所以可以多次调用图像加载。

所以你确定

.memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)

如果您不想存储太多数据,最好定义内存策略,可能是内存不足或短暂超时。

答案 1 :(得分:0)

尝试大堆。在android:largeheap="true"文件中插入manifest

<application
    android:name=".MyApplication"
    .....
    .....
    android:largeHeap="true"
    .....
    .....
    android:theme="@style/AppTheme" >
</application>

此外,最好使用.fit()

.fit() - 这将导致请求的延迟执行,直到ImageView布局完毕。