在我们的应用程序中,我们有很多图片。当他们需要的时候,我们以这样的方式得到他们:PlayN.assets().getImage("imageURL");
在android 2.3中,24mb的位图资源是有限制的。所以,当我在Screen2上显示图片(比方说游戏)时,我必须从Screen1中隐藏(卸载)图像(比方说简介)。我引用了来自Screen1的图像,可以调用clear()方法: CanvaseImage referenceToImage -I need to unload,referenceToImage.canvas().clear();
但是,这种方式不会在2.3.x中从安卓内存中卸载图像-( Android: Bitmap recycle() how does it work?...这篇文章告诉我应该在位图上调用recycle(),因为位图存储在非管理内存中,GC不能从那里收缩。)
如果不是从内存中卸载来自Screen1的图像,我有这样的安卓stackTrace:
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) 在Android 2.3.x内存模型中,有没有办法调用playN回收位图的魔力呢?
发布于 2012-06-19 15:37:31
你已经看过关于内存管理的Google article了吗?他们确实对如何处理位图问题进行了相当深入的解释。
发布于 2012-06-19 15:37:59
为什么不使用LruCache来缓存位图呢?请参阅文章here
https://stackoverflow.com/questions/11096381
复制相似问题