Я разрабатываю приложение, которое создает несколько объектов растрового изображения (например, кнопки, которые имеют растровые изображения кэша, поэтому их не нужно визуализировать снова и снова)
Теперь я понял, что когда янесколько раз запустить и запустить приложение на моем мобильном устройстве huawei, я получаю исключение OutOfMemoryException в тот момент, когда приложение пытается выделить немного памяти для растровых изображений.Так что я думаю, что именно растровые изображения создают проблемы.Я знаю, что есть метод bitmap.recycle ().
Теперь мой вопрос: как лучше очищать память?Почему нет какого-либо метода View, такого как View :: onDestroy (), который можно реализовать в целях очистки?
РЕДАКТИРОВАТЬ: пример
мой класс CirclyButton (extends Button) всегда рисуеткэшированное растровое изображение onDraw:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(this.getDefaultBitmap(), 0, 0, paint);
}
private Bitmap getDefaultBitmap(){
if(mBitmapDefault == null){
mBitmapDefault = Bitmap.createBitmap(8*radius, 8*radius, Config.ARGB_8888);
Canvas canvas = new Canvas(mBitmapDefault);
this.drawDefault(canvas);
return mBitmapDefault;
}
return mBitmapDefault;
}
Так что я думаю, что эти выделенные данные должны быть где-то переработаны ...?