Я пытаюсь соответствовать многозадачности на 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
ИмеетКто-нибудь есть идеи, что мне не хватает?
Спасибо