2013-01-07 7 views
0

Есть ли хороший способ проверить, сколько памяти из общего размера кучи имеет устройство в Java? Мое приложение, написанное в adobe air, использует встроенное расширение Java для загрузки нескольких изображений с SD-карты. Я нашел этот кусок кода, чтобы проверить, если битовая карта может быть загружена в память:Проверка размера кучи андроида

public boolean checkBitmapFitsInMemory(long bmpwidth,long bmpheight, int bmpdensity){ 

     long reqsize=bmpwidth*bmpheight*bmpdensity; 
     long allocNativeHeap = Debug.getNativeHeapAllocatedSize(); 
     final long heapPad=(long)Math.max(4*1024*1024,Runtime.getRuntime().maxMemory()*0.1); 
     if ((reqsize + allocNativeHeap + heapPad) >= Runtime.getRuntime().maxMemory()) 
     { 
      return false; 
     } 
     return true; 

    } 

Тем не менее, кажется, что на моем Galaxy S2 она полностью игнорируется. Может быть, потому, что приложение состоит из двух частей: одна - вторая Java - это сабвуфер. Есть ли еще значения памяти, которые я должен проверить перед загрузкой изображения в память приложений? Спасибо!

ответ

0

Заканчивать Android Runtime

Вызов Runtime.getRuntime().freeMemory() ресурсов возвращается память, доступных для запущенного приложения.

Также, this

+0

Спасибо. Я просто проверил freeMemory() из журнала, и это не имеет смысла. Он меняется с каждым загруженным изображением, но иногда он растет! перед загрузкой первого изображения было 1070032, после загрузки 20 изображений - 1698688. Своего расстройства. – Fossor

+0

Но это может быть правдой. Ваше приложение не единственное, использующее память, не так ли? – Fildor

+0

Так что это не практично в моем случае. Мне нужно знать, отключит ли ОС мое приложение со следующим изображением, загруженным в память – Fossor

Смежные вопросы