iOS многозадачное приложение DidEnterBackground вылетает при возврате - PullRequest
1 голос
/ 22 июня 2011

Я пытаюсь соответствовать многозадачности на iOS4.Я не работаю в фоновом режиме, я просто хочу восстановить в работающем состоянии, где это возможно.Я играю полностью в GL.

Во время applicationWillResignActive я устанавливаю флаги, которые останавливают рендеринг GL, приводят в порядок игру и тихо приостанавливают игру.

Во время applicationDidEnterBackground я освобождаю экранные буферы и вызываю glFinish.

В applicationWillEnterForeground я снова выделяю буферы

, а в applicationWillEnterForeground я делаю паузу в игре

Теперь все это вызывается, и это работает.Т.е., если я нажму кнопку «Домой», игра исчезнет, ​​если я нажму на иконку, она вернется в прежнее состояние.Приложение не закрывается.Это то же самое для запуска небольших приложений и последующего возврата к моему приложению.

Однако, если я запускаю большое приложение, такое как другая игра, и возвращаюсь, я возвращаю последний обработанный кадр.Пауза 5 секунд.Затем игра перезагружается или просто возвращается на трамплин.

У меня везде есть логи, и в отладчике при неудачном возврате я не получаю вызовов ни applicationWillEnterForeground, ни applicationWillEnterForeground, я просто получаю (gdb).

Из того, что я понимаю, если системе понадобится моя память, она будет тихо убита.Это нормально, так как я сохраняю все, когда я вхожу в фон.Так почему я получаю последний кадр рендеринга при повторном запуске, и почему он только иногда загружается, а иногда падает?

Я следовал приведенному здесь руководству: http://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/ImplementingaMultitasking-awareOpenGLESApplication/ImplementingaMultitasking-awareOpenGLESApplication.html

ИмеетКто-нибудь есть идеи, что мне не хватает?

Спасибо

...