0

AndEngine フレームワークで Android ライブ壁紙を開発しています。エミュレータの壁紙で画面の向きを変更すると、エラーでクラッシュしました:

09-05 14:25:32.003: E/AndroidRuntime(1310): FATAL EXCEPTION: GLThread 154
09-05 14:25:32.003: E/AndroidRuntime(1310): java.lang.OutOfMemoryError
09-05 14:25:32.003: E/AndroidRuntime(1310):     at org.andengine.opengl.util.GLHelper.getPixelsARGB_8888(GLHelper.java:165)
09-05 14:25:32.003: E/AndroidRuntime(1310):     at org.andengine.opengl.util.GLHelper.getPixels(GLHelper.java:41)
09-05 14:25:32.003: E/AndroidRuntime(1310):     at org.andengine.opengl.util.GLState.glTexImage2D(GLState.java:637)
09-05 14:25:32.003: E/AndroidRuntime(1310):     at org.andengine.opengl.texture.bitmap.BitmapTexture.writeTextureToHardware(BitmapTexture.java:120)
09-05 14:25:32.003: E/AndroidRuntime(1310):     at org.andengine.opengl.texture.Texture.loadToHardware(Texture.java:137)
09-05 14:25:32.003: E/AndroidRuntime(1310):     at org.andengine.opengl.texture.TextureManager.updateTextures(TextureManager.java:254)
09-05 14:25:32.003: E/AndroidRuntime(1310):     at org.andengine.engine.Engine.onDrawFrame(Engine.java:613)
09-05 14:25:32.003: E/AndroidRuntime(1310):     at org.andengine.opengl.view.EngineRenderer.onDrawFrame(EngineRenderer.java:105)
09-05 14:25:32.003: E/AndroidRuntime(1310):     at org.andengine.extension.opengl.GLThread.guardedRun(GLThread.java:219)
09-05 14:25:32.003: E/AndroidRuntime(1310):     at org.andengine.extension.opengl.GLThread.run(GLThread.java:95)

壁紙に多数のアニメーション スプライトがある場合にのみエラーが表示されます。誰でも私を助けることができますか?下手な英語でごめんなさい。

4

1 に答える 1

0

明らかに、エラーは十分なメモリがないことを意味します。どうやら方向が変わると、アプリケーションは古いスプライトを最初にアンロードせずに、スプライトをメモリにリロードします。向きが変わったときに呼び出しSystem.gc()て、不要になったスプライトが占有しているメモリを解放してみてください。メモリリークが発生している可能性があるため、手動でアンロードすることもできます。

この講義を参照して ください。http ://www.youtube.com/watch?v=_CruQY55HOk

于 2012-09-05T15:24:50.940 に答える