退出后保留iPhone应用程序状态

时间:2010-07-30 09:20:13

标签: iphone

如何在iPhone退出后保留iPhone的状态。这样做的简单方法是什么?

2 个答案:

答案 0 :(得分:3)

第一个问题是你何时保存?答案是在两个地方(假设你想支持3.x和4.x设备)。

首先,对于OS 3.x设备(以及不是多任务的OS 4设备):

- (void)applicationWillTerminate:(UIApplication *)application

第二,对于OS 4.x设备:

- (void)applicationDidEnterBackground:(UIApplication *)application

你需要在iOS4设备上执行此操作,因为如果应用程序在后台关闭时它就会被杀死;你永远不会看到applicationWillTerminate消息。

至于如何,这取决于你的应用程序有多复杂。我为每个可能想要保存其状态的视图控制器创建了一个简单的协议:

@protocol SaveState

- (NSData*) saveState;
- (id) initWithSaveState:(NSData*)data;

@end

通过循环浏览主导航控制器中的视图控制器并调用保存状态方法来保存状态。然后它在applicationDidFinishLaunching:方法中执行相反的操作。 More information on my blog

答案 1 :(得分:1)

在您的应用程序委托中,您可以定义-applicationWillTerminate:方法以包含用于保存应用程序状态数据的代码。

- (void) applicationWillTerminate:(UIApplication *)application {
    // save state to data model here...
}

您的数据模型取决于您。例如,这可以是一组user defaults或核心数据存储。

下次启动应用时,您可以在-applicationDidFinishLaunching:中检查已保存的状态数据并正确初始化应用。

如果您使用的是iOS 4并且您的应用程序支持多任务功能,您将获得一些“免费”状态保存功能,因为the app resigns focus而不是终止。