ApplicationWillTerminate在iOS 4.0中

Bir*_*chi 36 iphone uiapplicationdelegate ios4

在iOS 4.0中没有调用applicationWillTerminate委托方法当我点击Home按钮时,我看到applicationWillResignActive和applicationDidEnterBackground委托方法被调用.

 - (void)applicationWillResignActive:(UIApplication *)application
{
  NSLog(@"Application Did Resign Active");
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
  NSLog(@"Application Did Enter Background");
}
Run Code Online (Sandbox Code Playgroud)

当我双击主页按钮并再次启动应用程序时,我发现applicationWillEnterForeground和applicationDidBecomeActive委托方法被调用.

 - (void)applicationWillEnterForeground:(UIApplication *)application
{
  NSLog(@"Application Will Enter Foreground");
}



- (void)applicationDidBecomeActive:(UIApplication *)application
{
  NSLog(@"Application Did Become Active");
}
Run Code Online (Sandbox Code Playgroud)

但我想知道何时调用applicationWillTerminate委托方法,在那里我做一些DB /文件备份例程.

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

}
Run Code Online (Sandbox Code Playgroud)

我甚至试图点击减号并删除在后台运行的应用程序,但它仍然没有调用任何委托方法.

有任何想法吗 ???

Ole*_*ann 52

来自iPhone应用程序编程指南:

即使您使用iPhone SDK 4及更高版本开发应用程序,您仍必须为应用程序终止做好准备.如果内存受限制,系统可能会从内存中删除应用程序以腾出更多空间.如果您的应用程序当前处于暂停状态,系统会在不事先通知的情 但是,如果您的应用程序当前在后台运行,则系统会调用applicationWillTerminate:应用程序委托的方法.您的应用程序无法从此方法请求额外的后台执行时间.

所以,是的,applicationWillTerminate:一般不会很经常的iOS 4.如果有保存数据,你应该在这两个做所谓的applicationWillTerminate:applicationDidEnterBackground:.

  • falconcreek引用的视频大约22分钟,据说只有通过红色减号图标杀死的后台运行应用程序才能获得applicationWillTerminate:在被杀之前调用的好处.暂停的人立即死亡.它列在"终止"下,并没有100%清除,但听起来这适用于系统终止和用户通过减号启动终止. (5认同)
  • @David:嗯,iPhone 3G不支持多任务处理,这样才有意义. (3认同)