如何在应用程序退出时保存应用程序的状态

时间:2011-10-07 08:08:59

标签: iphone objective-c

我正在开发一款iphone游戏应用。我不想使用核心数据或nsuserdefaults来存储用户数据。相反,我希望将所有活动保存在内存中,然后在用户返回上一屏幕,结束游戏或按下iphone的主页按钮时将其发送到服务器。现在一切正常,但是当用户按下主页按钮时,我无法同步用户数据。我已经在我的委托类中实现了appilcationWillTerminate方法,但它不适合我,因为当我按下iphone的home键时,方法不会被调用。谁能告诉我如何完成这项任务?

最好的问候

2 个答案:

答案 0 :(得分:4)

这种方法怎么样:

告诉代表该应用程序现在在后台。

- (void)applicationDidEnterBackground:(UIApplication *)application

来自Apple Docs:

  

在iOS 4.0及更高版本中,当用户退出支持后台执行的应用程序时,将调用此方法而不是applicationWillTerminate:方法。您应该使用此方法释放共享资源,保存用户数据,使计时器无效,并存储足够的应用程序状态信息,以便将应用程序恢复到当前状态,以防以后终止。您还应该禁用应用程序用户界面的更新,并避免使用某些类型的共享系统资源(例如用户的联系人数据库)。您还必须避免在后台使用OpenGL ES。

     

您执行此方法大约需要五秒钟才能执行任何任务并返回。如果您需要额外的时间来执行任何最终任务,可以通过调用beginBackgroundTaskWithExpirationHandler:从系统请求额外的执行时间。实际上,您应该尽快从applicationDidEnterBackground返回:如果方法在时间用完之前没有返回,则应用程序将终止并从内存中清除。

答案 1 :(得分:0)

您应该使用NSUserDefaults来存储有关应用程序状态的数据。然后,当应用程序重新启动时,您可以从NSUserDefaults加载数据以重新创建以前的状态。然而,对于新的多任务处理,这并不像几年前那样必要。