Есть ли хороший способ проверить, сколько памяти из общего размера кучи имеет устройство в 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 - это сабвуфер. Есть ли еще значения памяти, которые я должен проверить перед загрузкой изображения в память приложений? Спасибо!
Спасибо. Я просто проверил freeMemory() из журнала, и это не имеет смысла. Он меняется с каждым загруженным изображением, но иногда он растет! перед загрузкой первого изображения было 1070032, после загрузки 20 изображений - 1698688. Своего расстройства. – Fossor
Но это может быть правдой. Ваше приложение не единственное, использующее память, не так ли? – Fildor
Так что это не практично в моем случае. Мне нужно знать, отключит ли ОС мое приложение со следующим изображением, загруженным в память – Fossor