在快速上下文切换时保存当前状态 - iOS4

时间:2010-07-02 11:59:34

标签: iphone ios4

在进行iOS-4多任务处理以进行快速上下文切换时,我对保存上一个应用程序状态表示怀疑。

应用程序是否必须在“ - (void)applicationDidEnterBackground:(UIApplication *)application”中手动保存最后一个状态?或者iOS-4会照顾它吗?

在视频中提到如下:

-(void)applicationDidEnterBackground:(UIApplication *)application {
   // save app state
   [self saveState];

   // reduce memory usages
   ....

   // prepare UI
   ....

   // close listening sockets
   ....
}

提前致谢,

苏尼

3 个答案:

答案 0 :(得分:0)

一旦您的应用程序进入后台,就不能保证它会回到前台。它可以在任何时间终止,不作任何通知。因此,输入背景,您希望保存状态或丢失它的风险。

引用Apple(来源:http://developer.apple.com/iphone/library/documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html),

  

在移至后台之前保存应用程序状态。在内存不足的情况下,后台应用程序将从内存中清除以释放空间。暂停的应用程序首先被清除,并且在清除之前不会通知应用程序。因此,在移至后台之前,应用程序应始终保存足够的状态信息,以便在必要时稍后重新构建。将应用程序恢复到以前的状态还可以为用户提供一致性,用户可以在重新启动时快速查看应用程序主窗口的快照。

答案 1 :(得分:0)

  

应用程序是否必须在“ - (void)applicationDidEnterBackground:(UIApplication *)application”中手动保存最后一个状态?或者iOS-4会照顾它吗?

是的,如果您希望应用程序在被杀死后恢复,则需要在此处手动保存状态。

答案 2 :(得分:0)

您应该在app delegate中使用这两种方法,以便在进入后台/终止之前保存当前状态。

  - (void)applicationWillResignActive:(UIApplication *)application {

    /*
     Sent when the application is about to move from active to inactive state. 
     This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) 
     or when the user quits the application and it begins the transition to the background state.
     Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. 
     Games should use this method to pause the game.
     */
}   
   - (void)applicationWillTerminate:(UIApplication *)application {

    /*
     Called when the application is about to terminate.
     See also applicationDidEnterBackground:.
     */
}