我在使用 for 循环下载一组图像并将其转换为位图图像的情况下。因此,为了避免 OutOfMemory 错误,我正在尝试回收位图。但不幸的是,我遇到了另一个异常,说的是 “View trying to use a recycled bitmap”
。
但我仍然可以使用 bitmap=null
使已使用的位图为空。所以我的问题是,让我的位图 null
会帮助我释放已用内存吗?或者我应该在代码的其他部分提供 bitmap.recycle()
吗?
最佳答案
调用 recycle()
向系统表明您已完成使用该资源,并且系统现在可以释放它正在使用的非托管内存。一旦您以这种方式处理了资源,它的行为通常是不确定的(人们会合理地期望它不再工作)。
之后将引用设置为 null 有两个好处:
- 当您尝试使用它们时,您将不会有对不起作用的对象的陈旧引用
- 垃圾收集器将知道清理位图对象的托管端,释放更多内存
关于android - 比较 b/w bitmap.recycle() 和 bitmap=null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6260787/