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 回答