Android上的Libgdx app.exit()不closures应用程序

在我用libGDX开发的Android应用程序中,当用户尝试退出游戏时,我使用Gdx.app.exit() 。 这closures了游戏,但是当用户重新启动应用程序时,所有的Textures都被打乱(超出使用应用程序的地步)。 我注意到,如果我强制从任务pipe理器closures应用程序,那么它会正常重启。

为什么会发生?

Solutions Collecting From Web of "Android上的Libgdx app.exit()不closures应用程序"

您已经重新发现了Java对象的生命周期(绑定到应用程序进程的生命周期)与纹理对象的生命周期(绑定到与Activity的可见性相关联的OpenGL上下文的生命周期)之间的不匹配。

在应用程序“退出”,只是活动退出,Android正在后台caching进程。 当你“重启”应用程序时,Android只是在同一个进程中启动一个新的Activity。 在这种情况下,Activityfind了一个有效的Java Texture对象,但是它在OpenGL上下文中“指向”的底层字节没有了(因为当Activity不再可见时OpenGL上下文无效)。

解决的办法是重新加载活动创build的纹理。 您必须确保所有包含纹理的对象(以及包含包含纹理的对象的对象等)都绑定到Activity生命周期。 一般来说,这意味着避免使用静态variables(它是应用程序生命周期的一部分),但是如果你愿意,你可以跳过这个循环来使全局variables无效并重新初始化。