【问题标题】:Recycle the Bitmap of a BitmapShader回收 BitmapShader 的 Bitmap
【发布时间】:2019-09-05 10:10:16
【问题描述】:
回收/释放BitmapShader 的位图的正确(推荐)方法是什么?
我们是否应该保留位图的引用,一旦 BitmapShader 不再使用,然后调用 bitmap.recycle()?
查看 BitmapShader 源代码,它清楚地表明该类不会对位图执行任何类型的释放,但它保留了一个引用以避免垃圾收集,因为大部分实现都是在本机代码中。
【问题讨论】:
标签:
android
bitmap
recycle
bitmapshader
【解决方案1】:
经过一些研究,我发现位图仍然必须被回收,因为 BitmapShader 不会对其执行任何释放。
继续的方法是确保 BitmapShader 不再被任何其他类使用。因此,例如,如果 BitmapShader 被 Paint 实例使用,例如 paint.setShader(bitmapShader),那么在回收位图之前,删除着色器引用,如 paint.setShader(null)。
一旦确保 BitmapShader 没有被使用并且根本不会被重复使用,然后像往常一样回收位图。