android oom 内存溢出问题

天高空 发布于 2013/01/16 15:50
阅读 2K+
收藏 0
A页面跳到B页面,A页面中的ListView中有20个元素Bitmap,当切换到B页面的时候,A处于OnPause状态,此时在onPause方法中将内存中的20个bitmap给recycle掉,然后进入B页面,可是当我在从B页面,再次进入A页面的时候,A从OnPause状态激活,进入OnResum,A中抛出异常::java.lang.RuntimeException: Canvas: trying to use a recycled bitmap

以下是问题补充:

@天高空:这种问题该如何解决?A页面中的bitmap必须recycle掉 (2013/01/16 15:50)
加载中
0
天高空
天高空
红薯哥哥 在哪?
0
天高空
天高空
请兄弟们帮帮忙啊
0
WineSum
WineSum
在激活的方法里面 循环一下listview里面的元素,把你的图片元素重新装填一次
0
血战
血战
这种属于常见问题,楼上的说的是正解
0
天高空
天高空

引用来自“WineSum”的答案

在激活的方法里面 循环一下listview里面的元素,把你的图片元素重新装填一次
不可以
0
天高空
天高空

引用来自“天高空”的答案

引用来自“WineSum”的答案

在激活的方法里面 循环一下listview里面的元素,把你的图片元素重新装填一次
不可以
我试过了 不行
0
天高空
天高空

引用来自“天高空”的答案

引用来自“天高空”的答案

引用来自“WineSum”的答案

在激活的方法里面 循环一下listview里面的元素,把你的图片元素重新装填一次
不可以
我试过了 不行
我把setContentView也放在OnResume中,每次进入A页面,我都会把控件拿一边,这样是可以了,但是每当我点击listView的时候,还是会报这个异常
0
T
Tauren
这个问题应该是你在A页面退出的时候把bitmap释放调了,当这个bitmap是被某个View使用着的,所以当你再次进入A页面显示这个View的时候调用了已经释放掉的 bitmap。所以你需要在这个View显示之前再给bitmap赋个值。即把recycle掉的数据再创建一遍。
0
天高空
天高空

引用来自“Tauren”的答案

这个问题应该是你在A页面退出的时候把bitmap释放调了,当这个bitmap是被某个View使用着的,所以当你再次进入A页面显示这个View的时候调用了已经释放掉的 bitmap。所以你需要在这个View显示之前再给bitmap赋个值。即把recycle掉的数据再创建一遍。
在onResum中就是把数据重新load的了一遍
0
T
Tauren
把释放跟重新创建的代码粘出来看看呢!!!
返回顶部
顶部