私たちのアプリにはたくさんの画像があります。彼らが必要なとき、私たちはそのような方法でそれらを手に入れます:PlayN.assets().getImage("imageURL");
Android 2.3 では、24 MB のビットマップ リソースに制限があります。したがって、Screen2 (ゲームとしましょう) に画像を表示している間、Screen1 (Intro としましょう) から画像を非表示 (アンロード) する必要があります。Screen1 からの画像への参照があり、clear() メソッドを呼び出すことができます: CanvaseImage referenceToImage - アンロードする必要があります。
referenceToImage.canvas().clear();
しかし、- この方法では、2.3.x で Android メモリから画像をアンロードしません - ( Android: Bitmap recycle() どのように機能しますか? ... この投稿では、ビットマップが格納されているため、ビットマップで recycle() を呼び出す必要があることを伝えています非管理メモリであり、GC によってそこから縮小することはできません。)
Screen1の画像がメモリからアンロードされていない場合、私はAndroid用のそのような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 の魔法を呼び出す方法はありますか?