如何判断iPhone应用程序是否通过后台启动

时间:2010-07-14 05:57:10

标签: iphone objective-c save nsuserdefaults backgrounding

我的应用程序使用NSUserDefaults存储一些值,以便它可以在应用程序更新时恢复它们或者退出后台运行。 Backgrounding会自动保存我的整数值,但是如果用户从启动器退出应用程序,那么数字也会丢失,而且我猜想在进入后台时不会引起ViewDidUnload方法。有没有办法可以在应用程序卸载时保存NSUserDefaults。此外,ViewDidLoad方法具有相同的问题,它不会从后台调用。这是怎么回事?

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

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

2 个答案:

答案 0 :(得分:1)

您无法在数据最终被杀之前保存数据,但您可以在applicationDidEnterBackground:应用代理中保存“以防万一”状态。

还有applicationDidBecomeActive :,但是没有理由从那里加载你的保存数据,因为当它从后台的应用程序调用时,数据将被保留。

答案 1 :(得分:1)

您无法判断您的应用是否是从后台启动的,至少是如何设置的,因为如果从跳板启动,您的应用代表将获得相同的事件序列。

正如Joost所说,你应该在applicationDidEnterBackground回调中保存恢复状态所需的一切;基本上,你应该假设这是你的应用程序在被邪恶的进程收割者无情地杀死之前将获得的最后一条消息。

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

相关问题