Fork me on GitHub

ios3和ios4退出时的区别

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键退出程序的功能,而且能通过审核

posted on 2012-04-13 09:31  pengyingh  阅读(892)  评论(0)    收藏  举报

导航