2012-06-19 51 views
1

在我們的應用程序中,我們有很多圖像。當他們需要我們得到他們在 這樣的方式:PlayN.assets().getImage("imageURL");PlayN Android 2.3.x OutOfMemory

在android 2.3中有24MB的位圖資源的限制。所以,雖然 顯示屏幕2上的圖像(比方說遊戲),我必須隱藏(卸載)來自Screen1的圖像 (讓我們說介紹)。 我從屏蔽1具有參考圖像,我可以調用clear()方法: CanvaseImage referenceToImage - 我需要卸載, referenceToImage.canvas().clear();

,但是 - 這種方式在Android內存在2.3.x版本不卸載圖像 - (Android: Bitmap recycle() how does it work? ... 這篇文章告訴我應該叫位圖的循環(),因爲位圖 存儲在非管理內存,並不能由 GC可以從那裏收縮。)

和我有這樣的堆棧跟蹤android如果屏幕1的圖像不是 從內存中卸載:

06-11 09:16:45.197: E/AndroidRuntime(23621): FATAL EXCEPTION: GLThread 
10 
06-11 09:16:45.197: E/AndroidRuntime(23621): 
java.lang.OutOfMemoryError: bitmap size exceeds VM budget(Heap 
Size=9479KB, Allocated=6032KB, Bitmap Size=23347KB) 
06-11 09:16:45.197: E/AndroidRuntime(23621): at 
android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 
06-11 09:16:45.197: E/AndroidRuntime(23621): at 
android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:694) 
06-11 09:16:45.197: E/AndroidRuntime(23621): at 
playn.android.AndroidAssets.decodeBitmap(AndroidAssets.java:158) 
06-11 09:16:45.197: E/AndroidRuntime(23621): at 
playn.android.AndroidAssets.doGetImage(AndroidAssets.java:79) 
06-11 09:16:45.197: E/AndroidRuntime(23621): at 
playn.core.AbstractAssets.getImage(AbstractAssets.java:39) 

是否有某種方式來調用playN的魔法在 的Android 2.3.x版本的內存模型回收位圖?

回答

1

你已經看過關於內存管理的Google article嗎?他們真的給出了一個相當深入的解釋如何處理該位圖問題。