我正在尝试创建一个包含来自Web服务的大量图像的应用程序。我正在使用 Picasso 库将图像加载到类似于片段的库中,其中 RecyclerView 具有惰性使用 ViewPager 加载并传递URL到滑块活动的列表我正在处理大量图像,所以在几张幻灯片后它开始抛出内存不足(OOM)异常。我试过了 Glide 它正在拉伸图像,所以我坚持使用Picasso.Tried很多方法,比如使用大堆并允许硬件访问。识别和处理<的任何方法/ strong>这个问题会有所帮助。
Picasso.with(context)
.load(image.getImageURL())
.memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
.skipMemoryCache()
.placeholder(R.drawable.poster_default)
.error(R.drawable.poster_default)
.into(mImageView);
答案 0 :(得分:0)
Android使用图像的位图,这意味着添加大图像将消耗大量内存。我在我的项目中做的是将fit()
添加到Picasso调用它,这样它将为我调整图像大小,而不是在内存中加载它的全尺寸。
尝试下面的内容,看看它是否已修复
Picasso.with(context)
.load(image.getImageURL())
.fit()
.centerCrop()
.memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
.skipMemoryCache()
.placeholder(R.drawable.poster_default)
.error(R.drawable.poster_default)
.into(mImageView);
答案 1 :(得分:0)
同意之前的回答。您也可以尝试使用RGB_565配置。使用此配置的图像小两倍
Picasso picasso = new Picasso.Builder(this)
.defaultBitmapConfig(Bitmap.Config.RGB_565)
.build();
并将此实例设置为picasso
Picasso.setSingletonInstance(picasso);
代码段应放在android.app.Application类
中的onCreate方法中