Mar*_*hun 15 android bitmap recycle
根据Android参考文档Bitmap.recycle():
释放与此位图关联的本机对象,并清除对像素数据的引用.这不会同步释放像素数据; 如果没有其他引用,它只是允许它被垃圾收集.位图标记为"死",这意味着如果调用getPixels()或setPixels(),它将抛出异常,并且不会绘制任何内容.此操作无法撤消,因此只有在您确定位图没有进一步用途时才应调用此操作.这是一个高级调用,通常不需要调用,因为正常的GC进程将在没有更多对此位图的引用时释放此内存.
但是,我读过的很多书都建议通过调用Bitmap.recycle()来释放内存,确保不再需要它.
这让我很困惑:使用后是否需要打电话Bitmap.recycle()?
and*_*per 18
这取决于.
如果您在Android 3.0及更高版本上运行您的应用程序,则不需要它,因为GC将完美地处理它.
但是,如果在旧版本上运行你的应用程序,因为位图无法由GC监测井(它认为他们是一个参考的大小),你可以得到OOM,在谷歌IO讲座如图所示这里.
在任何情况下,仍然建议您在确定不再需要位图时立即调用回收.它甚至适用于新的Android版本,因为它降低了自动内存管理所需的工作......
事实上,我记得我在这里问过类似的问题.
此外,如果您需要使用JNI额外控制位图,请查看此文章.
所以,简而言之,答案是它不再需要,但仍然建议.
编辑:自从Android 8.0以来,Bitmaps存储在本机内存中,因此很难达到OOM.事实上,这在技术上是不可能的,因为你会遇到其他问题.有关这方面的更多信息,请点击此处.
| 归档时间: |
|
| 查看次数: |
14551 次 |
| 最近记录: |