Я просто получил iPhone SDK 4, и я пытаюсь бросить разрабатывать приложение, я продолжал работать прежде. Таким образом, я реализовал обоих -(void)applicationDidEnterBackground:(UIApplication *)application
и - (void)applicationWillTerminate:(UIApplication *)application
Когда я нажимаю кнопку "Домой" в средстве моделирования 4.0, это, кажется, работает хорошо. Вызовы приложения -(void)applicationDidEnterBackground:(UIApplication *)application
и вводит фоновое состояние..
Однако я затем дважды щелкаю по кнопке "Домой", чтобы выставить приложение, работающее в фоновом режиме и удержать его, чтобы показать знак "минус" в или выйти. Когда я нажимаю знак "минус", говорит отладчик
Программа получила сигнал: "SIGKILL"
кроме того, - (void)applicationWillTerminate:(UIApplication *)application
никогда не называется. Я пропускаю что-то, что я должен сделать, чтобы это работало над OS4? Или по крайней мере может кто-то указывать на меня на способ отладить SIGKILL.Спасибо.
-applicationWillTerminate:
вызывается только в том случае, если ваше приложение находится в рабочем состоянии, когда его просят завершить работу. Если он уже находится в приостановленном состоянии (как у вас здесь), система просто отправляет сигнал уничтожения приложению. Это происходит, когда пользователь нажимает красные кнопки с минусом, чтобы закрыть приложение вручную, а также когда система решает отказаться от приложения, чтобы освободить память для приложения переднего плана.
Если ваше приложение работает в фоновом режиме (например, воспроизводит музыку или выполняет некоторые фоновые задачи) и пользователь вручную завершает работу приложения, нажимая кнопку «минус», только тогда вы действительно получите -applicationWillTerminate:
сообщение. Следовательно, вы должны сохранить все свое состояние / etc. перед возвратом из -applicationDidEnterBackground:
.
Ожидается, что полоса многозадачности «красная кнопка закрытия» эквивалентна принудительному завершению работы приложения в Mac OS X. Это задокументированное поведение. Apple ожидает, что обычные пользователи iOS 4 будут просто запускать / использовать / отключать приложения, которые им не нужно думать в терминах завершения процессов или чего-то еще. Система справится с этим.
Просто убедитесь, что сохранили все важные данные в application: willResignActive: или applicationWillEnterBackground. Потому что после этого вы можете погибнуть, когда из-за нехватки памяти система будет очищаться ... Snow Leopard представил аналогичное поведение для приложений, которые используют ключ NSSupportsSuddenTermination в своем Info.plist. Приложение в основном сообщает системе, что оно периодически сохраняет свои данные по крупицам, так что, когда оно переходит в фоновый режим, делать нечего или очень мало. В отличие от больших монолитных приложений, настольные приложения ...