В нашем приложении у нас много изображений. Когда они нужны, мы получаем их таким образом: PlayN.assets().getImage("imageURL");
В Android 2.3 есть ограничение на 24 МБ растровых ресурсов. Итак, при показе изображений на Экране 2 (скажем, Игра) я должен скрыть (выгрузить) изображения с Экрана 1 (скажем, Вступление). У меня есть ссылка на изображение из Screen1, и я могу вызвать метод clear(): CanvaseImage referenceToImage - мне нужно выгрузить, referenceToImage.canvas().clear();
НО, - таким образом, не выгружайте изображение из памяти Android в 2.3.x - ( Android: Bitmap recycle() как это работает?... в этом посте говорится, что я должен вызвать recycle() для растрового изображения, поскольку растровые изображения хранятся в неуправляющей памяти и не могут быть сжаты оттуда с помощью GC.)
а у меня такой stackTrace для андроида если картинки с Screen1 не выгружаются из памяти:
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?