gpt4 book ai didi

android - picasso 在加载图像时内存不足

转载 作者:太空狗 更新时间:2023-10-29 12:41:33 24 4
gpt4 key购买 nike

我正在使用 Picasso 从我的服务器加载图像并在 ImageView 中显示它们。

我观察到一些来自用户手机的崩溃报告,其中在 Picasso 尝试将图像加载到 ImageView 时发生内存不足异常。

堆栈跟踪如下:

java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:832)
at android.content.res.Resources.loadDrawable(Resources.java:2988)
at android.content.res.Resources.getDrawable(Resources.java:1558)
at android.widget.ImageView.resolveUri(ImageView.java:646)
at android.widget.ImageView.setImageResource(ImageView.java:375)
at com.squareup.picasso.PicassoDrawable.setPlaceholder(PicassoDrawable.java:62)
at com.squareup.picasso.RequestCreator.into(RequestCreator.java:520)
at com.squareup.picasso.RequestCreator.into(RequestCreator.java:462)
at com.mycompany.myAdapter.getView(MyAdapter.java:102)
at android.widget.AbsListView.obtainView(AbsListView.java:2608)
at android.widget.GridView.makeAndAddView(GridView.java:1346)

MyAdapter.java:102 附近的代码如下:

@Override
public View getView(int position, View convertView, ViewGroup parent) {

.....Some code .....

Picasso.with(mContext)
.load(url_to_server)
.placeholder(R.drawable.default_placeholder)
.into(holder.imageItem); // Line 102

.....Some code .....

return convertView;
}

我使用这个库的方式有问题吗?

最佳答案

我们可以使用 .setImageResource(image) 来加载像启动器图标这样的小图像,但是,加载大图像最好使用 Picasso 并获得简单性和本地缓存的好处。

需要根据文档正确设置Picasso:

“请务必在加载到 ImageView 之前使用 fit() 调整图像大小。否则,如果渲染大量图片,您将消耗额外的内存、滚动缓慢或遇到内存不足的问题。”

if (imageUri != null && !imageUri.isEmpty()) {
Picasso.with(context).load(imageUri)
.fit().centerCrop()
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder_error)
.into(imageView);
}

关于android - picasso 在加载图像时内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24916867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com