Picasso使用时,ImageView做ListView的Item出现异常Canvas: trying to use a recycled bitmap
来源:互联网 发布:剑三成男恐怖脸型数据 编辑:程序博客网 时间:2024/05/29 15:36
经过是这样的: 我在activityA显示了一个listview使用imageView作为item,图片是从网络获取,我这里直接用的是网络框架Picasso,它内部自带缓存机制,而点击listView的Item会跳到activityB,并使用被点击的图片的url.重新获取图片显示到activityB上面:在activityA上面我的调用时这样的:
Picasso.with(context).load(mUrl).into(imageViewA);
而在activityB中我尝试使用Target(注意!问题就在这里!),监听图片加载接口来实现设置imageView:
Picasso.with(mContext).load(mUrl).into(new Target() { //图片加载成功 @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { imageViewB.setImageBitmap(bitmap); } );
当我运行的时候,点击某个条目跳转到activityB,当我返回到activityA,并上下滑动,当显示到刚才被点击的那个条目时就出现了异常:
Canvas: trying to use a recycled bitmap android.graphics.Bitmap
当时那可真是一脸懵逼啊,于是各种搜索,各种查找,最终让我找到了原因:
在activityA中我使用url给item设置图片时,bitmap对象会存到Picasso的缓存机制中,在activityB中我使用相同的url加载图片时,在target的回调onBitmapLoaded方法中拿到的bitmap就是activityA中Picasso缓存过的bitmap,当我finish()了activityB,这时对应的bitmap就被回收掉了. 重新回到activityA时,Picasso并不知道这个缓存的bitmap被回收了,还是直接设置给了ListView的item,此时就会报这个异常.
所以在activityB中我也就不用target 了,继续使用Picasso.with(context).load(mUrl).into(imageViewB);问题就得到了解决;
参考文章:
1.http://stackoverflow.com/questions/28151017/runtimeexception-canvas-trying-to-use-a-recycled-bitmap-android-graphics-bitma
2.http://bbs.csdn.net/topics/390826811
- Picasso使用时,ImageView做ListView的Item时出现异常Canvas: trying to use a recycled bitmap
- Picasso使用时,ImageView做ListView的Item出现异常Canvas: trying to use a recycled bitmap
- ListView 或是 GridView中。Canvas: trying to use a recycled bitmap 异常
- Android回收图片的bitmap,导致的Canvas: trying to use a recycled bitmap异常处理
- 关于异常Canvas: trying to use a recycled bitmap android.graphics.Bitmap的解决
- 图片显示的内存回收出现RuntimeException: Canvas: trying to use a recycled bitmap
- 解决Bitmap recycle异常:Canvas: trying to use a recycled bitmap android.graphics.Bitmap
- Android Bitmap回收异常:Canvas: trying to use a recycled bitmap android.graphics.Bitmap解决
- 使用高德地图时出现 trying to use a recycled bitmap android.graphics.Bitmap
- Canvas: trying to use a recycled bitmap android.graphics.Bitmap
- Canvas: trying to use a recycled bitmap android.graphics.Bitmap
- Gesture控制图片缩放&Canvas: trying to use a recycled bitmap android.graphics.Bitmap异常
- Bitmap的recycle后Canvas: trying to use a recycled bitmap android.graphics.Bitmap问题
- java.lang.RuntimeException: Canvas: trying to use a recycled bitmap
- RuntimeException: Canvas: trying to use a recycled bitmap
- 有关Bitmap使用时报错 Canvas: trying to use a recycled bitmap
- 完美解决 trying to use a recycled bitmap android.graphics.Bitmap@41d的异常
- trying to use a recycled bitmap解决之道
- linux基础unit4
- 如何快速转载CSDN的博客
- 给一段字符串,找出其中出现次数最多的字母及出现的次数(出现最多次数的项只有一个的情况)
- linux-unit4练习题
- linux基础unit3
- Picasso使用时,ImageView做ListView的Item出现异常Canvas: trying to use a recycled bitmap
- Picasso使用时,ImageView做ListView的Item时出现异常Canvas: trying to use a recycled bitmap
- java基础加强
- 在Linux下安装JDK并配置环境变量
- 关于阅读论文的几点思考
- File功能概述
- 欢迎使用CSDN-markdown编辑器
- FastDFS简介
- 关于汉诺塔算法的递归写法