ios实现程序切入后台,实现后台任务

1,项目需求,是程序home键切入后台,3分钟后退出登陆,

  首先,iOS 会再持续切入后台,给我们5秒钟的时间去处理相关数据,5秒后,程序不会再执行任何代码,处于挂起状态

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

 //切入后台 ,申请后台任务时间,

    UIApplication *app = [UIApplication sharedApplication];

    UIBackgroundTaskIdentifier taskID;//一个后台任务标识符

    taskID = [app beginBackgroundTaskWithExpirationHandler:^{ //如果系统觉得我们运行时间太长,将执行这个程序块,并停止运行应用程序

       

        [app endBackgroundTask:taskID];

    }];

    

    if (taskID == UIBackgroundTaskInvalid) {//UIBackgroundTaskInvalid表示系统没有为我们提供额外的时间

       

        return;

    }


    [self performSelector:@selector(exitApp) withObject:nil afterDelay:180.0];//退入后台 延时3分钟,退出登陆

  

}

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


    [[UIApplication sharedApplication] endBackgroundTask:taskID];//切回前台,结束后台任务

    [NSObject   cancelPreviousPerformRequestsWithTarget:selfselector:@selector(exitApp) object:nil];//取消之前将要退出的方法


}





第二种:每隔一段时间,系统自动执行的任务(设置的值必须大于等于600)
执行的必要条件:
      找到程序的 plist 配置文件,增加:
      键:UIBackgroundModes 类型:Array
      在 Item0 里面设置类型:String,值:voip

      [[ UIApplication  sharedApplicationsetKeepAliveTimeout:600  handler:^{
             //执行你想要执行的任务,同时可以配合第一种任务,以增加某些同步方法的执行时间,比如说下载数据等
      }];

注意:
    当多程序切换的时候,此任务也会被关闭。
    运行的条件必须在软件不被关闭的情况下可用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值