Iphone 应用程序将在iOS 4.0中终止

Iphone 应用程序将在iOS 4.0中终止,iphone,ios4,uiapplicationdelegate,Iphone,Ios4,Uiapplicationdelegate,iOS 4.0中未调用applicationWillTerminate委托方法 当我点击Home按钮时,我看到applicationWillResignActive和ApplicationIdentinterBackground委托方法被调用 - (void)applicationWillResignActive:(UIApplication *)application { NSLog(@"Application Did Resign Active"); } - (void)applic

iOS 4.0中未调用applicationWillTerminate委托方法 当我点击Home按钮时,我看到applicationWillResignActive和ApplicationIdentinterBackground委托方法被调用

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

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



- (void)applicationDidBecomeActive:(UIApplication *)application
{
  NSLog(@"Application Did Become Active");
}
当我双击Home按钮并再次启动该应用程序时,我发现该应用程序将进入前台,并且将调用ApplicationIDBecomeActive委托方法

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

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



- (void)applicationDidBecomeActive:(UIApplication *)application
{
  NSLog(@"Application Did Become Active");
}
但是我想知道什么时候调用applicationWillTerminate委托方法,在这里我执行一些数据库/文件备份例程

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

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


有什么想法吗?

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

即使您使用iPhoneSDK4及更高版本开发应用程序,也必须做好终止应用程序的准备。如果内存受到限制,系统可能会从内存中删除应用程序以腾出更多空间。如果您的应用程序当前处于挂起状态,系统将从内存中删除您的应用程序,而不另行通知。但是,如果应用程序当前正在后台运行,系统会调用应用程序委托的
applicationWillTerminate:
方法。应用程序无法从此方法请求额外的后台执行时间


因此,是的,
应用程序将终止:
在iOS 4中通常不会经常被调用。如果必须保存数据,则应在应用程序WillTerminate:和应用程序IdentinterBackground:

我有一个解决方案,可以在用户点击iOS4中的Home按钮时终止应用程序。 这将调用applicationWillTerminate委托方法,而不是进入后台进程

  • 打开你的info.plist文件
  • 添加UIApplicationExitsOnSuspend键
  • 将新键设置为“是”

  • 实际上,您也可以使用此步骤来执行此操作

  • 打开你的info.plist文件
  • 添加密钥->应用程序不在后台运行
  • 将此键值设置为“是”

  • 您确实在
    应用程序willterminate:
    中添加了一些代码,对吗?您的问题当前显示一个空的方法体。我在falconcreek引用的视频第22分钟找到了解决方案,据说只有通过红色减号图标终止的后台运行应用程序才能获得应用程序终止的好处:在被终止之前调用。悬而未决的人马上就死了。它列在“终止”下,没有100%清楚地说明,但这听起来似乎适用于系统终止和用户通过减号发起的终止。在iPhone 3G上运行iOS 4时,似乎应用程序将终止:在按下“主页”按钮后被调用。@David:嗯,iphone3g不支持多任务处理,所以这是有意义的。我知道这个线程很旧,但是iOS5呢-applicationWillTerminate:即使在应用程序进入后台(按home按钮)后,我按下红色减号按钮,也不会调用该方法。我遗漏了什么吗?@nacho4d:与iOS 4的行为相同。这将立即退出你的应用程序,而不仅仅是暂停它。因此,当用户重新启动应用程序时,它必须重新启动,从而消除了快速切换应用程序的好处。通常,不鼓励使用UIApplicationExitsOnSuspend,除非您的应用程序确实需要退出()。@Brian:如果它最适合您的应用程序和用户群的需要,则没有理由不鼓励这种行为,否则该功能的存在就没有意义了。@lakehousetech,您不必相信我的话。《iOS应用程序编程指南》说,“强烈反对选择后台执行,但在某些情况下可能是首选。”这与我所说的差不多:-)。该指南还说,冷启动的应用程序应该恢复以前的状态,因此很少需要立即终止。