解决方案 »
- 在4.X上编写的程序无法在2.3上运行吗?
- java.lang.RuntimeException: Adding window failed
- 人人客户端从左侧滑出效果
- apk包可以合并吗?
- git clone下载内核warning: remote HEAD refers to nonexistent ref, unable to checkout
- 帅哥美女们速度进来看看啊
- F1帮助系统如何建立?
- ANDROID STUDIO问题
- android 访问webservice 报错
- 为什么升级Android studio 3.0之后,打包后的apk都是安装失败
- 强大的CSDN:新手--google 地图部署到android虚拟机上怎么只显示方格,MapView配置都正确,虚拟机也能上网
- android底层crash问题
@Override
public void imageLoad(RelativeLayout relative, Bitmap bitmap) {
// TODO Auto-generated method stub
relative.setBackgroundDrawable(new BitmapDrawable(bitmap));
}
});
if (bitmap == null) {
relative.setBackgroundDrawable(new BitmapDrawable(bt));
} else {
relative.setBackgroundDrawable(new BitmapDrawable(bitmap));
}// 将bitmap加载到map中,方便用过之后回收掉
cacheBit.put(arg1, new SoftReference<Bitmap>(bitmap));/
这里 你有可能将bitmap=null 缓存进cache中。
//初始化时候 你的 bitmap 必然 为null ,但是你依然将这个null 写入缓存
基本上比较完善的工具都会提供图片缓存机制,并有比较完善的淘汰算法。
当你的item摧毁时候,你recyle bitmap,但是对于imageLoader 它不知这个图片recycle了,就有可能同样的url 他返回的还是这个recycled 的图片。你检查下。
你说的非常对,厉害啊,你这么以提示我真的发现问题了,果然是我考虑的不周全的问题,bitmap做过两次缓存,在adapter中一次,在imageLoader 里面也缓存过一次,adapter中的代码没有问题,但是adapter中回收了以后imageLoader 中并不知道已经被回收掉,根据键值判断该bitmap存在,但事实上该bitmap已被回收掉。所以报错了。知道错在哪里了,和你说的一模一样,非常感谢。希望见到过这个帖子的人别和我犯同样的错误了。