Как узнать, было ли приложение iPhone запущено в фоновом режиме или нет - PullRequest
1 голос
/ 14 июля 2010

Мое приложение использует NSUserDefaults для хранения некоторых значений, чтобы оно могло восстановить их при обновлении приложения или при прекращении фоновой обработки. Фоновая обработка автоматически сохраняет мои целочисленные значения, но если пользователь выходит из приложения из модуля запуска, числа также теряются, и метод ViewDidUnload, который, я полагаю, не вызывает при входе в фоновую обработку. Есть ли способ, которым я могу сохранить NSUserDefaults каждый раз, когда приложение выгружается. Кроме того, метод ViewDidLoad имел ту же проблему, он не вызывает фоновой обработки. Как обойти это?

P.S. Пока единственное, что нужно сохранить моему приложению, это int для подсчета на экране.

ОБНОВЛЕНИЕ: UIApplicationDidEnterBackgroundingNotification прекрасно работает с вашими предложениями!

Ответы [ 2 ]

1 голос
/ 14 июля 2010

Вы не можете сказать, было ли ваше приложение запущено из фона или нет, по крайней мере, как оно настроено в данный момент, так как ваш делегат приложения получит ту же последовательность событий, если оно запущено из трамплина.

Как говорит Joost, вы должны сохранить все необходимое для восстановления состояния внутри обратного вызова applicationDidEnterBackground;по сути, вы должны предположить, что это последнее сообщение, которое ваше приложение получит, прежде чем оно будет безжалостно убито злым жнецом процесса.

Вы должны проверить Видео сеансов WWDC 2010 , в частности, Session105 - Принятие многозадачности на iPhone OS, часть 1 для подробного объяснения.

1 голос
/ 14 июля 2010

Вы не можете сохранить данные непосредственно до того, как они в конечном итоге будут уничтожены, но вы можете сохранить состояние «на всякий случай» в вашем applicationDidEnterBackground: делегат приложения.

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

...