在我们的应用程序中,我们有很多图像。当他们需要时,我们以这种方式获得他们:PlayN.assets().getImage("imageURL");
在 android 2.3 中有 24mb 的位图资源限制。因此,在 Screen2 上显示图像(比如说游戏)时,我必须从 Screen1 中隐藏(卸载)图像(比如说介绍)。我参考了 Screen1 中的图像,我可以调用 clear() 方法:CanvaseImage referenceToImage - 我需要卸载,
referenceToImage.canvas().clear();
但是, - 这种方式不要在 2.3.x 中从 android 内存中卸载图像 - (Android: Bitmap recycle() 它是如何工作的? ...这篇文章告诉我应该在位图上调用 recycle(),因为位图存储在非管理内存,不能被 GC 从那里缩小。)
如果来自 Screen1 的图像没有从内存中卸载,我有这样的 android 堆栈跟踪:
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 内存模型中回收位图的魔法吗?