回收 BitmapShader 的位图

Recycle the Bitmap of a BitmapShader

recycle/release BitmapShader 位图的正确(推荐)方法是什么?

我们是否应该保留位图的引用,并且一旦不再使用 BitmapShader 就调用 bitmap.recycle()?

查看 BitmapShader 源代码,它清楚地表明 class 不会对位图执行任何类型的释放,但它保留了一个引用以避免垃圾收集,因为大多数实现都是原生的代码。

经过一番研究,我发现位图仍必须回收,因为 BitmapShader 不会对其执行任何释放。

继续的方法是确保 BitmapShader 不再被任何其他 class 使用。因此,例如,如果 BitmapShaderPaint 实例使用,例如 paint.setShader(bitmapShader),然后在回收位图之前,删除着色器引用,如 paint.setShader(null).

一旦确保 BitmapShader 未被使用并且根本不会被重复使用,然后像往常一样回收位图。