У меня есть приложение, которое содержит несколько фрагментов, и в одном из них У меня есть пользовательский вид, где я создаю пару растровых изображений, чтобы рисовать на них.Как правильно обработать растровые изображения внутри фрагмента?
Ну, это проблема: Когда я обмениваюсь фрагментами, все нормально, пока не дойду до того места, где находится пользовательский вид. Проблема в том, что, когда я снова и снова выбираю фрагмент (который имеет CustomView), ОЗУ увеличивается, а затем приложение падает.
Я проверил, как растровые изображения создаются и перерабатываются, и я не могу найти решение.
код:
private Bitmap getCircle() {
if (mDstBitmap == null) {
mDstBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888);
c = new Canvas(mDstBitmap);
c.drawColor(Color.TRANSPARENT);
p = new Paint(Paint.ANTI_ALIAS_FLAG);
p.setColor(Color.RED);
c.drawOval(new RectF(0, 0, mWidth, mHeight), p);
}
return mDstBitmap;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int viewWidthHalf = getWidth()/2;
int viewHeightHalf = getHeight()/2;
float radius = 0.0f;
if (viewWidthHalf > viewHeightHalf)
radius = (viewHeightHalf/2);
else
radius = (viewWidthHalf/2);
circle = getCircle();
canvas.drawBitmap(circle, 0, 0, mBitmapPaint);
}
Я думаю, в чем-то вроде этого, но это не работает:
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
delete();
}
public void delete(){
if (mDstBitmap != null) {
mDstBitmap.recycle();
}
if (linesBitmap != null) {
linesBitmap.recycle();
}
}