2015-08-17 2 views
0

Я использую либергейм Libgdx для загрузки активов пользовательского интерфейса. Он отлично работает, пока я не перезапущу приложение (Android). Вот что происходит:Libgdx AssetManager не загружает ресурсы на резюме

  1. Я начинаю свою игру: Это прекрасно работает
  2. я закрыть приложение не используя Gdx.app.exit() (нет ошибок)
  3. Теперь, когда я нажимаю на значок приложения, чтобы открыть его: разбился!

Ошибка: com.badlogic.gdx.utils.GdxRuntimeException: Asset not loaded: data/GUI/packed/gui.atlas

Я попытался finishloading() не повезло! Я пробовал использовать finishloadingasset("data/GUI/packed/gui.atlas") этот блок навсегда! Добавлено assetmanager.dispose() также ясно перед выходом. Не повезло!

После того, как он разбился, если я попытаюсь открыть его снова, он отлично работает!

Прошу совета! Thanks

+0

Показать код и фактическую трассировку стека аварии. –

+1

Позвольте мне угадать ... у вас есть статическая ссылка на ваш AssetManager или класс, который ссылается на него. Это вызовет проблемы в Android, потому что закрытие Activity в Android не автоматически очищает ваши статические ссылки. – Tenfour04

+0

Да, вы правы! Я назвал активатора статичным! Позвольте мне попробовать сделать его нестационарным и вернуться. Спасибо – aks

ответ

2

Закрытие операции в Android не позволяет автоматически очищать ваши статические ссылки. Не держите никаких статических ссылок на любые объекты, связанные с OpenGL, такие как AssetManagers, Textures, ShaderPrograms, SpriteBatches и т. Д., Или вы рискуете возобновить игру в Android, не зная, как (или что ей нужно) перезагрузить их.

Возможно, существуют способы обойти это, очистив ваши статические ссылки в методе onCreate вашего действия, но безопаснее и проще избегать статических ссылок вообще.

Смежные вопросы