2012-11-11 78 views
0

在我的應用我試圖表明使用100張圖片頁面捲曲效果如下面的GitHub的鏈接解釋 - hereAndroid的內存不足問題

在示例代碼,他們只使用兩個圖像,但在我的應用程序中,我使用了大約90張圖像。這將導致該應用獲取崩潰,說出以下問題logcat的

E/dalvikvm-heap(603): Out of memory on a 5529616-byte allocation. 

當我與它的工作好7張圖片試過。當我嘗試增加超過7時,它會墜毀。我所有的圖像都在可繪製的文件夾中。

在這種GitHub的代碼繪製的圖像採取如下

mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page9)); 
     mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page10)); 
     mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page11)); 
     mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page12)); 
     mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page13)); 
     mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page14)); 
     mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page15)); 

如何解決這個問題,加載所有的圖像,更好的建議...

回答

0

使用延遲加載機制。不要一次將所有位圖加載到內存中,將ID保留在ArrayList中,並根據需要加載它們,並在使用它們之後卸載位圖,以便釋放內存。

0

你必須認識到,堆每個應用程序在Android中的使用都非常有限,因此您無法像使用桌面PC那樣使用更多的內存。所以下面是您可能想要使用的解決方案:

  1. 使用更小尺寸的圖像。
  2. 優化您的應用程序行爲,意味着您不應加載任何暫時未使用的任何Bitmaps,並在它們變得不必要時立即正確回收它們。
  3. 限制已經爲您工作的Bitmaps的數量。

希望你會實現其中的一個,使你的應用程序更好地工作。