2010-07-30 90 views

回答

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

+0

谢谢斯蒂芬。这真的帮助了我。如果我遇到任何其他问题,我会尽快回复您。 – Krishnan 2010-07-30 11:31:48

1

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

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

您的数据模型取决于您。例如,这可能是一组user defaults或Core Data存储。

下次启动应用程序时,您可以检查-applicationDidFinishLaunching:中保存的状态数据并适当地初始化应用程序。

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

+0

嗨亚历克斯, Thanks.Let我说,我有四个选项卡,目前我在第一个选项卡,并在第六屏幕,(SIX导航我做了),我怎么能存储的信息很容易识别,其中一个下一次用户打开应用程序时,我应该打开它。我认为一旦App下次启动,我将不得不以编程方式遍历该特定的View?我的假设是否正确? – Krishnan 2010-07-30 10:03:09

+1

正确的是,您保存了用户停止位置的“树状图”,然后在应用重新启动时再返回。 – 2010-07-30 10:11:01

相关问题