我有一个应用程序(游戏)可以保存数据:游戏状态,高分,成就等。目前,应用程序代表在applicationWillTerminate:
上执行此操作。在使用iPhone 4之后,似乎应用程序几乎永远不会终止:它们只是永远在后台运行,除非用户不退路退出或重启手机。
所以我的问题是,我是否应该找到另一个地方来保存我的数据,如果是,那么何时?
答案 0 :(得分:5)
为了最大限度地减少委托方法调用所花费的时间,您应该找到一个在游戏中保存有意义的地方(完成级别,检查点等)。您还可以向应用程序委托添加新的委托方法,当您的应用程序转换到后台时,将调用该方法,您可以在其中复制先前在applicationWillTerminate:
中执行的一些操作。要实施的新委托方法是-applicationDidEnterBackground:
。
您还会收到一封通知,告知用户已将applicationWillEnterForeground:
切换回您的应用。
答案 1 :(得分:2)
您可以在视图中删除委托方法
- (无效)viewDidDisappear:(BOOL)动画
{
//保存代码
}
答案 2 :(得分:2)
您应该保存在applicationDidEnterBackground中。确保用 - beginBackgroundTaskWithExpirationHandler:和endBackgroundTask包装你的保存代码,因为没有它,你会在执行暂停之前少于一秒(或类似的东西)。
答案 3 :(得分:2)
您可以使用2种App委托方法
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:
查看the reference了解详情