У меня есть приложение для libgdx. Он отлично работал как на Android, так и на IOS, когда я использовал версию libgdx 1.1.4 и robovm 1.0.0.Beta. Недавно я обновился до libgdx 1.6.3 и robovm 1.4. Теперь версия для Android работает нормально, но есть небольшое сбои при использовании приложения IOS. Проблема в том, что если я приостанавливаю приложение, нажимая кнопку «домой», а затем возобновляю его, я получаю черный экран. Приложение не разбивается. Я ничего не вижу в журналах.robovm blackscreen после возобновления на IOS
Есть ли у кого-нибудь идеи, что может быть?
Я бы очень признателен за любую помощь. Заранее спасибо.
__UPDATE__
Что поразило меня является тот факт, что, когда я возвращаюсь в игру, ни один из методов резюме (ни один в классе XXXGame, ни в классе XXXScreen) не вызывается. Чтобы быть точным, у меня есть записи журналов во всех этих методах, чтобы увидеть, как идет поток программ. Я вижу журналы, когда я приостановил игру, но ничего, когда я ее возобновляю.
Это выглядит фундаментальной проблемой, поскольку, как вы знаете, метод возобновления является частью методов жизненного цикла libgdx и должен быть вызван независимо от того, что. Проблема не может быть на стороне libgdx, потому что приложение отлично работает на Android. Итак, мне интересно, что-то не так на стороне robovm. Я что-то там пропал?
__UPDATE2__
Я создал новый libgdx проект, используя графический интерфейс, чтобы выяснить, если же проблема возникает на платформе IOS. Похоже, pause-resume-pause-resume отлично работает в новом проекте. Поэтому я начал сравнивать новый проект с моим. Мой класс игры наследуется от com.badlogic.gdx.Game, но класс игры нового проекта реализует com.badlogic.gdx.ApplicationAdapter. Я изменил его, чтобы они совпадали. Он не нарушил новый проект.
В реализации по умолчанию отсутствовал метод возобновления класса Game. Поэтому я добавил следующее:
@Override
public void resume() {
// super.resume();
Gdx.app.log("Testing", "resume");
}
К моему удивлению, в журналах, я вижу два набора резюме сообщений следующим образом:
2015-07-01 08:05:52.435 IOSLauncher[54152:2661071] [debug] IOSApplication: created
2015-07-01 08:05:52.706 IOSLauncher[54152:2661071] [debug] IOSApplication: resumed
2015-07-01 08:05:59.093 IOSLauncher[54152:2661071] [debug] IOSApplication: paused
2015-07-01 08:05:59.093 IOSLauncher[54152:2661071] [info] Testing: pause
2015-07-01 08:06:00.670 IOSLauncher[54152:2661071] [debug] IOSApplication: resumed
2015-07-01 08:06:00.670 IOSLauncher[54152:2661071] [info] Testing: resume
2015-07-01 08:06:04.587 IOSLauncher[54152:2661071] [debug] IOSApplication: paused
2015-07-01 08:06:04.587 IOSLauncher[54152:2661071] [info] Testing: pause
2015-07-01 08:06:06.640 IOSLauncher[54152:2661071] [debug] IOSApplication: resumed
2015-07-01 08:06:06.640 IOSLauncher[54152:2661071] [info] Testing: resume
2015-07-01 08:06:09.300 IOSLauncher[54152:2661071] [debug] IOSApplication: paused
2015-07-01 08:06:09.300 IOSLauncher[54152:2661071] [info] Testing: pause
Я не был уверен, где это IOSLauncher [54152: 2661071 ] [debug] IOSApplication: возобновлена строка была зарегистрирована. Я прокомментировал super.resume() в методе, чтобы предотвратить это, но это не помогло.
Я проверил свое собственное приложение, чтобы увидеть, если я получаю что-то похожее на IOSLauncher [54152: 2661071] [отладка] IOSApplication: возобновился, но я не мог.
Пока я играл с кодом и документировал, что я здесь делаю, я нашел проблему. Я отправлю его здесь в ближайшее время.
Вы используете FrameBuffers и генерируете их в режиме изменения размера или создания? – Tenfour04
@ Tenfour04 Спасибо за ваше время. Но нет, я не использую FrameBuffers. – Alp
простой способ найти, является ли проблема libgdx или robovm для сборки с libgdx 1.6.3 и robovm 1.0.0.Beta. Если проблема исчезла, Robovm, иначе это libgdx. –