http://blog.sina.com.cn/s/blog_45e2b66c01011bjn.html
第一种方法:
//首先声明app UIApplication * app= [UIApplication sharedApplication]; //接下来四行是新的功能,能检查设备是否支持后台,老系统和一代的backgroundSupported = NO;支持的自然就是YES啦 UIDevice* device = [UIDevice currentDevice]; BOOL backgroundSupported = NO; if ([device respondsToSelector:@selector(isMultitaskingSupported)]) backgroundSupported = device.multitaskingSupported; //如果设备不支持后台,那么就继续使用applicationWillTerminate: if(backgroundSupported==NO) { [[NSNotificationCenter defaultCenter ] addObserver:self selector:@selector(applicationWillTerminate:) name:UIApplicationWillTerminateNotification object:app]; } //如果支持 else{ //这个新的UIApplicationWillResignActiveNotification就是在用户按下home键时的通知,建议用它的selector去保存数据,能防止用户直接在任务管理器里强制退出~ [[NSNotificationCenter defaultCenter ] addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationWillResignActiveNotification object:app]; //这个UIApplicationWillEnterForegroundNotification是app在切回前台时的通知,可以显示“欢迎回来”之类的=___= [[NSNotificationCenter defaultCenter ] addObserver:self selector:@selector(applicationDidBecomeActive:) name:UIApplicationWillEnterForegroundNotification object:app]; }
第二: 在工程中的Info.plist中有一个属性是“application don‘t run in background”,设置他的值,可以实现后台的运行或者暂停退出等功能。另附加注意,更详细更有用:最终完美版: 首先,对于 iphone4的手机 抑或是ios4 的项目 重载了下面的几个方法,系统会自动的保留现场,不用自己写代码控制;
- (void)applicationWillResignActive:(UIApplication *)application { //home键时执行 //直接退出程序 //[[UIApplication sharedApplication] terminateWithSuccess]; }- (void)applicationDidEnterBackground:(UIApplication *)application { //home键时执行 //直接退出程序 **** [[UIApplication sharedApplication] terminateWithSuccess];}- (void)applicationWillEnterForeground:(UIApplication *)application { //重新回到活跃状态 }- (void)applicationDidBecomeActive:(UIApplication *)application { //重新回到活跃状态 }
然后,打***的那行代码主要实现,按home键程序直接退出,在有些程序中为了安全的考虑会要求这样做,但那行代码引用的是一个私有的方法,app store的审核是通不过的(本人亲身经历被打回),还有种方法是:把***的那行代码换成“exit(0);”,这行代码也是可以实现按home键退出程序的功能,而且能通过审核