像应用程序这样的库中的内存不足问题

时间:2017-04-29 11:10:04

标签: android out-of-memory picasso android-glide

我正在尝试创建一个包含来自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);

2 个答案:

答案 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方法中