Libgdx app.exit () на Android не закрывает приложение

В моем приложении для Android, разработанном с помощью libGDX, я использую Gdx.app.exit() когда пользователь пытается выйти из игры. Это закрывает игру, но когда пользователь перезапускает приложение, все Textures скремблируются (за пределами использования приложения). Я заметил, что если я закрою приложение из диспетчера задач, он перезапустится должным образом.

Почему это происходит?

Solutions Collecting From Web of "Libgdx app.exit () на Android не закрывает приложение"

Вы заново обнаружили несоответствие между временем жизни объектов Java (привязанным к жизненному циклу процесса приложения) и временем жизни объектов текстуры (привязанным к жизни контекста OpenGL, привязанного к видимости Activity).

В приложении «exit» только активность завершена, а Android кэширует процесс в фоновом режиме. Когда вы «перезапускаете» приложение, Android только начинает новую активность в том же процессе. В этом случае Activity находит действительный объект Java Texture, но базовые байты, которые он «указывает» в контексте OpenGL, исчезли (поскольку контекст OpenGL недействителен, когда активность больше не видна).

Исправление заключается в повторной загрузке текстур при создании активности. Вы должны убедиться, что все объекты, содержащие текстуры (и объекты, содержащие объекты, содержащие текстуры и т. Д.), Привязаны к жизненному циклу активности. Как правило, это означает, что вы избегаете статических переменных (которые являются частью жизненного цикла приложения), но вы можете перепрыгнуть через обручи, чтобы сделать недействительными и повторно инициализировать глобальные переменные, если хотите.