Я просмотрел проблемы «Размер растрового изображения превышает бюджет виртуальной машины», но ни одно из решений не представляется мне подходящим. Я не понимаю, почему моя программа иногда выдает эту ошибку, потому что то, как я ее использую, похоже, не вызывает никаких утечек памяти. Мои следы стека указывают на метод BitmapFactory.decodeResource (). У меня есть фоновое изображение, которое я использую для рисования на холсте, и вот как я его инициализирую:
Bitmap backgroundImage = BitmapFactory.decodeResource(getResources(),
R.drawable.background);
backgroundImage = resizeImage(backgroundImage, w, h);
Вот как я это использовал:
canvas.drawBitmap(backgroundImage, 0, 0, paint);
Я думал, что использование backgroundImage = null
в методе onDestroy поможет, но это ничего не дало. В моей программе нет другой ссылки на ресурс фонового изображения, кроме файла XML, но я не думаю, что это влияет на него. Может ли кто-нибудь объяснить мне, почему это происходит и как это исправить?
Кстати, в этом приложении нет изменений ориентации экрана.