iPhone4:何时保存数据?

iPhone4:何时保存数据?,iphone,iphone-4,Iphone,Iphone 4,我有一个应用程序a游戏,它可以保存数据:游戏状态、高分、成绩等。当前应用程序代理在应用程序上执行此操作将终止:。在玩了一段时间iPhone4之后,应用程序似乎永远不会终止:它们永远在后台运行,除非用户特意退出或重新启动手机 所以我的问题是,我是否应该找到另一个地方来保存我的数据,如果是,什么时候?您可以在views-delegate方法中这样做 -虚空视窗消失:BOOLanimated { //保存代码 }您应该保存在ApplicationIdentinterBackground中。请确保使用–

我有一个应用程序a游戏,它可以保存数据:游戏状态、高分、成绩等。当前应用程序代理在应用程序上执行此操作将终止:。在玩了一段时间iPhone4之后,应用程序似乎永远不会终止:它们永远在后台运行,除非用户特意退出或重新启动手机


所以我的问题是,我是否应该找到另一个地方来保存我的数据,如果是,什么时候?

您可以在views-delegate方法中这样做

-虚空视窗消失:BOOLanimated

{

//保存代码


}

您应该保存在ApplicationIdentinterBackground中。请确保使用–beginBackgroundTaskWithExpirationHandler:和endBackgroundTask包装您的保存代码,因为如果不使用–beginBackgroundTaskWithExpirationHandler:和endBackgroundTask,则在执行挂起之前,您只有不到一秒钟的时间或类似时间。

为了最大限度地减少委托方法调用所花费的时间,您应该找到一个在游戏级别完成、检查点等过程中有意义保存的地方。您还可以向应用程序委托添加一个新的委托方法,当您的应用程序转换到后台时,将调用该委托方法,您可以在后台复制以前在applicationWillTerminate中执行的某些操作:。要实现的新委托方法是-ApplicationIdentinterBackground:


您还将收到一条通知,用户将切换回您的应用程序,因为applicationWillEnterForeground:。

您可以使用两种应用程序委派方法

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:

查看更多信息

方法是applicationAndidenterBackground:调用应用程序时,应用程序已经在后台。此外,您的应用程序在ApplicationIdentinterBackground方法调用中时将永远不会挂起,只有在它返回后才会挂起。然而,在看门狗终止你之前,你只有大约5秒钟的时间从该方法返回。didResignActive也是一个不错的地方,尽管didEnterBackground应该足够了。是的,我认为还有一些。感谢所有的回复,我最终完成了大部分保存统计数据、高分等。当游戏结束时,以及在ApplicationIdentinterBackground上保存游戏状态。