Android系统中Bitmap是否有调用recycle方法的必要性

 我来答
千锋教育
2016-04-06 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
Bitmap需调用 recycle() 是历史问题,在 Android 3.0之前,Bitmap 的图片数据是在底层C中处理的,因此在 Android3.0 之前 recycle() 是应该调用的。虽然 finalize() 会调用 recycle() ,但对Java有经验的同学应该知道只依靠 finalize() 去释放资源是会出很多问题的.

在Android 3.0之后,图片数据放在了Bitmap对象的一个成员变量 mBuffer[] 中。因此可以不调用recycle() .在 Bitmap 置 null 后图片数据会被GC回收。

现在都 Android5.0 的年代了,建议不考虑支持3.0之前的版本。

实际上Bitmap.recycle()的说明上也有说明:
This is an advanced call, and normally need not be called, since the normal GC process will free up this memory when there are no more references to this bitmap.
(这是一个高级函数,一般来说没必要调用。在没有引用指向 Bitmap 时,GC 会自动释放内存)
育知同创教育
2016-04-14 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
Android系统中Bitmap有一个recycle方法,调用这个方法可以回收Bitmap的空间。
很有必要调用的两大理由:
1、垃圾回收是释放内存的主要处理机制。
2、 当application关闭,process被杀掉,所有这个process占用的空间自然回归系统。
但是注意:不要在多线程环境下调用UI用过的bitmap的recycle方法,多线程之间是很难保证时间顺序的,暂时没有想出一种在background thread里面recycle的合理的方式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式