2012-06-19 1 views
1

В нашем приложении у нас много изображений. Когда они нужны, мы получаем их в таким образом: PlayN.assets().getImage("imageURL");PlayN Android 2.3.x OutOfMemory

В android 2.3 есть ограничение для 24 бит растровых ресурсов. Итак, пока показывая изображения на Screen2 (скажем, игра), я должен скрыть (выгрузить) изображения с Screen1 (скажем, Intro). У меня есть ссылка на изображение из Screen1 и я могу назвать четкий метод(): CanvaseImage referenceToImage - мне нужно выгрузить, referenceToImage.canvas().clear();

НО, - этот путь не выгружать изображения из памяти андроида в 2.3.x - (Android: Bitmap recycle() how does it work? ... этот пост сказать, что я должен вызвать рециркуляцию() на растровом изображении, так как растровые изображения сохраняется в памяти без управления и не могут быть усаживаются оттуда GC.)

и у меня есть такое StackTrace для андроид, если изображения с экрана 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 «s для рециркуляции растровых изображений в модели памяти Android 2.3.x?

ответ

1

Вы уже ознакомились с Google article об управлении памятью? Они действительно дают достаточно подробное объяснение того, как бороться с этой проблемой растрового изображения.

1

Почему вы не используете LruCache для кеширования растровых изображений? см. статью here