使用Picasso从Firebase存储下载图像:内存不足异常

4

我正在开发一款Android应用程序,需要从Firebase后端下载图片,但在我的回收视图中下载并显示5到6张图片后,会抛出“内存不足”的异常。

我使用了一个图像压缩库,因此每张图像的大小近乎为300到400 KB。

我添加了<application android:largeHeap="true",但问题仍然存在

我的代码:

//Retriving image from picasso
            Picasso.Builder builder = new Picasso.Builder(c);
            builder.listener(new Picasso.Listener() {
                @Override
                public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
                    Toast.makeText(c,exception.getMessage(),Toast.LENGTH_LONG).show();
                }
            });
            Picasso pic = builder.build();
            pic.load(currentPost.getDownloadlinkDB()).into(((MyViewHolder_Image) holder).imageView, new Callback() {
                @Override
                public void onSuccess() {

                }

                @Override
                public void onError() {
                    Toast.makeText(c, "Problem in downloading image from server", Toast.LENGTH_SHORT).show();
                }
            });

异常快照 enter image description here

如何解决这个问题?


尝试使用Glide。它存储调整大小后的图像而不是原始图像,并使用RGB565。 - user2756345
图像大小的KB并不重要,只有分辨率才是关键。 - Vladyslav Matviienko
1个回答

2
请将以下内容添加到您的清单文件中,在应用程序标签内:

在应用程序标签内,将此内容添加到您的清单文件中。

<application
     android:largeHeap="true"

已经添加了,只增加了两张图片的下载量,但这还不够。 - Environer Inc
尝试增加Picasso的缓存大小。 - Mohit Goel
1
Picasso p = new Picasso.Builder(context) .memoryCache(new LruCache(24000)) .build();彼加索 p = new Picasso.Builder(context) .memoryCache(new LruCache(24000)) .build(); - Mohit Goel
哇!!它运行了... 但是我们静态设置了memoryCache的最大大小,如何动态设置它,这意味着应用程序可以自己决定Picasso需要多少空间。 - Environer Inc
需要检查。还需要检查它对增加最大缓存大小的影响。 - Mohit Goel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接