2010-07-14 109 views
1

我的应用程序使用NSUserDefaults来存储一些值,以便它可以在应用程序更新时恢复它们或退出背景。后台程序会自动保存我的整数值,但如果用户退出启动程序,则数字也会丢失,并且我猜想在进入后台处理时不会调用ViewDidUnload方法。有没有办法可以在应用程序卸载时保存NSUserDefaults。另外,ViewDidLoad方法也有同样的问题,它不会从背景中唤起。这是什么方法?如何判断iPhone应用程序是否通过背景启动

P.S.到目前为止,我的应用程序需要保存的唯一数据是屏幕计数的整数。

更新:UIApplicationDidEnterBackgroundingNotification非常适合您的建议!

+0

谢谢你们!我很惊讶。我爱堆栈溢出,我从来没有去过任何其他地方,你可以得到这么多相关的帮助,而且这么快。 – SeniorShizzle 2010-07-14 06:58:58

回答

1

无法在数据最终死亡之前保存数据,但可以在applicationDidEnterBackground:应用程序委托中保存状态以防万一。

还有一个applicationDidBecomeActive :,但没有理由从那里加载保存数据,因为当它从后台应用程序调用时,数据将以任何方式保存。

+0

如果您不想在应用程序委托中使用逻辑,还会发出DidEnterBackground的通知。 – drawnonward 2010-07-14 06:15:04

+0

好的,所以你告诉我在applicationDidEnterBackground上调用NSUserDefaults:每一次,然后只从viewDidLoad的默认值更新?天才! – SeniorShizzle 2010-07-14 06:22:41

1

您不能分辨您的应用程序是否从后台启动,至少目前如何设置,因为如果您的应用程序代表从跳板启动,它将获得相同的事件序列。

正如Joost所说,你应该保存任何你需要在applicationDidEnterBackground回调中恢复状态;从本质上讲,你应该认为这是你的应用程序在被邪恶进程收割者无情杀死之前得到的最后一条消息。

您应该查看WWDC 2010 Session Videos,特别是会话105 - 在iPhone OS上采用多任务处理,第1部分,以获得全面的解释。

+0

感谢会议视频建议!我喜欢这些视频,我会检查一下:) – SeniorShizzle 2010-07-14 06:20:45

相关问题