2013-01-07 64 views
0

有沒有一種很好的方法來檢查整個堆大小中有多少內存在Java中具有該設備? 我的應用程序使用原生Java擴展從Adobe SD Card中加載多個圖像。我發現這段代碼來檢查位圖是否可以加載到內存中:檢查android堆大小

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第二個是Adobe Air。在將圖像加載到應用程序內存之前,應該檢查另一個內存值嗎? 謝謝!

回答

0

退房Android Runtime

調用Runtime.getRuntime().freeMemory()提供給運行應用程序返回的內存資源。

此外,this

+0

感謝。我剛剛從Log中檢查了freeMemory(),它沒有任何意義。它隨着每個加載的圖像而改變,但有時它正在增長!在加載第一張圖片之前,它是1070032,加載20張圖片後是1698688.有點令人沮喪。 – Fossor

+0

但這可能是事實。您的應用程序不是唯一使用內存的應用程序,是嗎? – Fildor

+0

所以在我的情況下是不實際的。我需要知道操作系統將關閉我的應用與下載圖像加載到內存 – Fossor