ApplicationWillTerminate在iOS 4.0中
applicationWillTerminate委托方法没有在iOS 4.0中调用当我点击主页button,我看到applicationWillResignActive和applicationDidEnterBackground委托方法被调用。
- (void)applicationWillResignActive:(UIApplication *)application { NSLog(@"Application Did Resign Active"); } - (void)applicationDidEnterBackground:(UIApplication *)application { NSLog(@"Application Did Enter Background"); }
当我双击主页button,再次启动应用程序,我发现applicationWillEnterForeground和applicationDidBecomeActive委托方法被调用。
- (void)applicationWillEnterForeground:(UIApplication *)application { NSLog(@"Application Will Enter Foreground"); } - (void)applicationDidBecomeActive:(UIApplication *)application { NSLog(@"Application Did Become Active"); }
但是我想知道什么时候会调用applicationWillTerminate委托方法,在哪里做一些DB /文件备份例程。
- (void)applicationWillTerminate:(UIApplication *)application{ }
我甚至试图打减号,并删除在后台运行的应用程序,但它仍然没有调用任何委托方法。
有任何想法吗 ???
从iPhone应用程序编程指南:
即使您使用iPhone SDK 4及更高版本开发您的应用程序,您仍然必须准备好终止您的应用程序。 如果内存受到限制,系统可能会从内存中删除应用程序以腾出更多空间。 如果您的应用程序当前处于暂停状态,系统将从您的应用程序中删除您的应用程序 但是,如果您的应用程序当前正在后台运行,则系统会调用
applicationWillTerminate:
程序委托的applicationWillTerminate:
方法。 您的应用程序无法从此方法请求额外的后台执行时间。
所以是的, applicationWillTerminate:
通常不会在iOS 4中经常被调用。如果你必须保存数据,你应该在applicationWillTerminate:
和applicationDidEnterBackground:
中都这么做。
WWDC 2010会议采用iPhone OS上的多任务处理 ( 第2部分 )非常好地解释了应用程序状态转换。
当用户点击iOS4中的主页button时,我得到了一个终止应用程序的解决scheme。 这将调用applicationWillTerminate委托方法而不是进入后台进程。
- 打开你的info.plist文件
- 添encryption钥UIApplicationExitsOnSuspend
- 将新密钥设置为YES
其实你也可以用这一步来做。
- 打开你的info.plist文件
- 添加键 – >应用程序不会在后台运行
- 将此键值设置为YES