Android-bitmap OOM问题,如何回收相应内存
inflate一个layout,在这个layout中有背景图,
有button,button有背景图,有imageView,有gridView,gridView有一个背景图,在gridView中有button,button也有背景图,
请问,如何释放这些图片占用的内存?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
XML布局中加载的图片是不用GC的,
他们是和View/Activity 绑定在一起,同生同死。
UI上加载的可以使用SoftReference让虚拟机进行快速回收。
如果迫切需要手动回收,严格控制内存开销,也许就该针对场景写Cache的管理了。
对于一般的场景,使用栈的结构就足够了,对于期望高效流畅又有着复杂item的ListView的话
可能需要预加载和手动回收。
期待你在给出详细应用场景后进行详细讨论。
我觉得只有你在代码里面创建过bitmap对象才需要回收,如果通过xml文件的属性比如src去配置应该不需要自己去回收。
update:
bitmap是object,当然是堆对象,不可能是堆栈对象。
如果你说的情况确实是通过xml属性设置背景图,应该不会涉及到bitmap对象,更不会涉及到自己去回收。一个app这么多图片,每个都自己回收这还不完蛋了?这是framework内部自己处理的事情,内部是不是用bitmap对象,如果是怎么用怎么回收不是应用层考虑的事情。
if(!bitmap.isRecycled()){//先判断图片是否已释放了
bitmap.recycle();
}