Свободная память, выделенная Bitmap в ICS с Custom View

0

1. Я использую пользовательский вид.

2.Это пользовательский вид, который я реализовал с моей деятельностью.

3. Я завершаю свою деятельность и воссоздаю несколько раз.

  1. Таким образом, он перераспределяет память для создания Bitmap.

  2. Как я могу убедиться, что я не перераспределяю новую память каждый раз.

  3. Как я могу повторно использовать или освобождать уже выделенную память для Bitmap.

Я хочу избавиться от утечки памяти из-за Bitmap.

if (cachedBitmap == null){
  cachedBitmap = Bitmap.createBitmap(getWidth(),getHeight(), Config.ARGB_8888);
  cachedCanvas = new Canvas(cachedBitmap);
  transparentColor = new int[cachedBitmap.getWidth()*cachedBitmap.getHeight()];

  for(int i = 0 ; i < (int) 5 *1.5 * cachedBitmap.getHeight() ; i++) {
     transparentColor[i]  = Color.TRANSPARENT;
  }
}

drawStuff(cachedCanvas);  
canvas.drawBitmap(cachedBitmap, 0, 0, null);
Теги:
memory
memory-management
bitmap

1 ответ

0

В более ранних версиях Android Bitmap является родным объектом, а не находится внутри виртуальной машины Dalvik. Это может быть проблемой в отношении утечек памяти, как вы упомянули. Вы можете, однако, освободить память с помощью этого кода:

Bitmap bmp;    // your existing Bitmap
bmp.recycle(); // Clears the bitmap from memory
bmp = null;    // Unset it to be sure

final boolean isRecycled = bmp.isRecycled(); // Can be run to check if the
                                             // Bitmap is cleared from memory

Если вы последовательно очищаете свои растровые изображения таким образом, вы можете избежать утечек памяти. Ссылка: http://android.okhelp.cz/delete-bitmap-android-example/

  • 0
    это не восстанавливает эту память. Все еще есть утечка памяти.
  • 0
    Можете ли вы добавить исключение / ошибку, которую вы получаете в OP? Может быть, что-то еще не так. Также вам придется перерабатывать КАЖДЫЙ растр в вашем приложении ...
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню