Если ваше приложение находится в фоновом режиме и приостановлено, когда пользователь его убивает, оно не получит уведомления.Это составляет большинство случаев.
Если ваше приложение в настоящее время работает в фоновом режиме (есть только очень специфические категории приложений, которые могут это делать), то оно получает applicationWillTerminate
.
Действительно, Apple очень четко говорит о том, что вам следует сохранить любые соответствующие данные перед входом в фоновый режим.Взгляните на this (глава «Ответ на завершение приложения»):
Даже если вы разрабатываете свое приложение с использованием iOS SDK 4 и более поздних версий, вы все равно должны быть готовы кПриложение должно быть убито без какого-либо уведомления. Пользователь может явно уничтожать приложения, используя многозадачный интерфейс. Кроме того, если память становится ограниченной, система может удалить приложения из памяти, чтобы освободить место. Если ваше приложение в настоящий момент приостановлено, система убивает ваше приложение и удаляет его из памяти без какого-либо уведомления .Однако, если ваше приложение в данный момент работает в фоновом состоянии (другими словами, не приостановлено), система вызывает applicationWillTerminate: метод вашего делегата приложения.Ваше приложение не может запросить дополнительное время фонового выполнения с помощью этого метода.
РЕДАКТИРОВАТЬ:
о "извините" вещь ...
вы, безусловно, можете сделать этона следующем запуске.просто сохраните ключ в NSUserDefaults
и удалите его, когда приложение войдет в фоновый режим (надеюсь, все это звучит вам знакомо, в противном случае загляните в протокол UIApplicationDelegate).
при запуске приложения вы проверяетеключ;если он есть, то приложение не было закрыто пользователем;если приложения там нет, то пользователь, по крайней мере, переместил приложение в фоновый режим и не столкнулся с внезапным завершением ...