iPhone 4: когда сохранять данные? - PullRequest
0 голосов
/ 23 июня 2010

У меня есть приложение (игра), которое сохраняет данные: состояние игры, рекорды, достижения и т. Д. В настоящее время делегат приложения делает это на applicationWillTerminate:.После небольшой игры с iPhone 4 кажется, что приложения почти никогда не закрываются: они просто работают в фоновом режиме, если пользователь не изо всех сил пытается выйти из него или перезагрузить телефон.

Итак, мой вопрос, должен ли я найти другое место для сохранения своих данных, и если да, то когда?

Ответы [ 4 ]

5 голосов
/ 23 июня 2010

Чтобы минимизировать количество времени, затрачиваемое на вызов метода делегата, вы должны найти место, которое имеет смысл экономить во время игры (прохождение уровня, контрольные точки и т. Д.).Вы также можете добавить новый метод делегата к вашему делегату приложения, который будет вызываться, когда ваше приложение переходит в фоновый режим, где вы можете дублировать некоторые вещи, которые вы, возможно, делали ранее в applicationWillTerminate:.Новый метод делегата для реализации - -applicationDidEnterBackground:.

. Вы также получите уведомление о том, что пользователь снова переключился на ваше приложение как applicationWillEnterForeground:.

.
2 голосов
/ 23 июня 2010

Существует 2 метода делегирования приложения, которые вы можете использовать

applicationDidResignActive: //pausing the app, used when a msg comes up. if multitasking this wont help

applicationDidEnterBackground: // called in iOS 4 for when the app is in the background

, которые вы можете видеть, когда он загружается на передний план, используя

applicationWillEnterForeground:

извлечение ссылка для получения дополнительной информации

2 голосов
/ 23 июня 2010

Вы должны сохранить в applicationDidEnterBackground. Обязательно оберните свой код сохранения с - beginBackgroundTaskWithExpirationHandler: и endBackgroundTask, так как без этого у вас будет меньше секунды (или что-то в этом роде), прежде чем выполнение будет приостановлено.

2 голосов
/ 23 июня 2010

вы можете сделать это в представлениях diddisappear делегат метод

- (Недействительными) viewDidDisappear: (BOOL) анимированный

{

// КОД ДЛЯ СОХРАНЕНИЯ

}

...