У меня есть ListView
, а элементы в списке являются обычными View
s. View
класс имеет полеCanvas.drawBitmap() и освобождение памяти
private Bitmap bitmap;
и onDraw
метод View
использует
canvas.drawBitmap(bitmap, matrix, paint);
беда в том, что я адресности OutOfMemoryError
с. Я хочу, чтобы освободить память, связанную с Bitmap
, когда элемент прокручивается с экрана. Я думал, что могу написать bitmap = null
, чтобы позволить сборщику мусора взять Bitmap
, но я беспокоюсь, что canvas.drawBitmap
может означать, что это не сработает. Делает ли canvas.drawBitmap
держаться за ссылку на Bitmap
? Или вызов canvas.drawBitmap
означает, что сам объект Canvas
имеет столько же памяти, сколько Bitmap
? Проблема в том, что я действительно не понимаю, что такое Canvas
, и что на самом деле делают различные вызовы draw
. Спасибо за помощь.