And*_*lva 9 android bitmap out-of-memory
我处于这样一种情况,我使用for循环下载一组图像,我将其转换为位图图像.所以为了避免OutOfMemory错误,我试图回收位图.但不幸的是,我遇到了另一个例外情况"View trying to use a recycled bitmap".
但我仍然可以通过使用来取消使用的位图bitmap=null.所以我的问题是,我的位图会null帮助我释放已用过的内存吗?或者我应该提供bitmap.recycle()我的代码的其他部分?
没有保证强制垃圾收集的方法,只能建议使用垃圾收集System.gc().由于位图像素数据位于dalvik堆之外的本机内存中,因此提供本机函数(在本例中recycle())将使我们有机会清除(最终)此像素数据.请注意,使用时recycle(),您可以使用该位图做更多的事情.
您遇到的问题是您正在调用recycle()一个您仍在尝试使用的位图.
要回答你的问题,是的,在你回收它之后将位图设置为null是一个好主意,但它也可能是多余的.完成后,请务必尝试回收位图.
调用recycle()向系统指示您已完成使用该资源,并且系统现在可以释放它正在使用的非托管内存.一旦以这种方式处理了资源,它的行为通常是未定义的(人们会合理地预期它不再起作用).
之后将引用设置为null有两个好处:
| 归档时间: |
|
| 查看次数: |
5384 次 |
| 最近记录: |