I am going to answer my question here. The right methods to override onDetachedFromWindow. I delete the bitmap inside onDetachedFromWindowand redistribute them inside onMeasureif the width or height has changed.
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
if (cachedBitmap != null && !cachedBitmap.isRecycled()) {
cachedBitmap.recycle();
cachedBitmap = null;
cachedBitmapWidth = -1;
cachedBitmapHeight = -1;
}
}
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int viewWidth = MeasureSpec.getSize(widthMeasureSpec);;
int viewHeight = MeasureSpec.getSize(heightMeasureSpec);;
if (cachedBitmapWidth != viewWidth || cachedBitmapHeight != viewHeight) {
if (cachedBitmap != null) {
cachedBitmap.recycle();
}
cachedBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
cachedBitmapWidth = viewWidth;
cachedBitmapHeight = viewHeight;
Canvas canvas = new Canvas(cachedBitmap);
}
setMeasuredDimension(viewWidth, viewHeight);
}
source
share