中断后保存/恢复状态,如电话呼叫或用户退出应用程序

时间:2011-06-24 14:48:18

标签: iphone ios

  

可能重复:
  IOS3 Compatible App in IOS4 Mutlitasking

我已经做了一个测验应用程序,我需要保存状态(计时器,一个问题ID数组,一个包含字典对象的数组,用来说明用户已回答的内容和当前索引)当用户按下主页时按钮或拨打电话等。

然而,该应用程序将在iOS版本< 4.0,所以在某些情况下,多任务处理是不可能的。

我已经写了这个,但我无法在iOS 3.1.3(实际设备)上收到此UIApplicationWillResignActive的通知,在iOS> = 4.0上它可以正常工作。我还注释掉了UIApplicationWillEnterBackground通知,因为该应用程序在iOS 3.1.3设备上运行时崩溃,因为通知名称不可用。如何检查它是否可用,就像我使用方法一样?

    NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
    [nc addObserver:self selector:@selector(saveState) name:UIApplicationWillResignActiveNotification object:nil];
    //[nc addObserver:self selector:@selector(loadState) name:UIApplicationWillEnterForegroundNotification object:nil];

我应该注册哪些通知名称,以及如何在没有多任务处理的iOS系统上保存/加载状态以及如何使用?

谢谢。

3 个答案:

答案 0 :(得分:2)

使用isMultitaskingSupported属性确定您是否可以依赖该方法,并在相应地保存数据时进行更改。不依赖于操作系统版本,因为即使在iOS 4+上也可以禁用多任务处理(很少见,是的,但可能)

答案 1 :(得分:0)

通常建议您随身携带这些东西。否则,当您的应用程序退出时,您可能需要花费太长的时间来编写它。

答案 2 :(得分:0)

对于不支持多任务处理的iOS版本,您可以在applicationWillTerminate:中保存状态。但是你没有很多时间去做很多工作,所以你可能最终得到了部分保存。正如@amergin所说,最好随心所欲地保存任何实质内容。