iOS开发之后台运行调用beginBackgroundTaskWithExpirationHandler

APP在正常运行过程中,突然按下Home键或者锁屏键,也或者电话接入,APP将进入后台,在几秒钟以后将退出程序.在程序使用socket或者播放器连接,短暂的进入后台需要保持活动状态,以免播放器退出,socket断开,可调用系统的beginBackgroundTaskWithExpirationHandler方法,程序进入后台AppDelegate将会使用applicationDidEnterBackground:方法,只需要在这里告诉即可.如下面

 backTaskIdentifier = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{

         [[UIApplication sharedApplication]endBackgroundTask:backTaskIdentifier];

         backTaskIdentifier = UIBackgroundTaskInvalid;

     }];

使用beginBackgroundTaskWithExpirationHandler必须要成对使用endBackgroundTask方法,因为在后台保持任务只能持续180秒的时间,可以使用[[UIApplication sharedApplication]backgroundTimeRemaining]获取到当前在后台的剩余时间.超过180秒,不能调用当前的ID(即backTaskIdentifier)的endBackgroundTask,APP将崩溃闪退,这是Apple强制APP退出活动的结果.

需要注意:backTaskIdentifier可看成当前APP进入后台的ID号,结束后台活动也必须是当前的ID,所以需要使用全局属性,可以当成MAC电脑上使用终端命令top查看各任务ID一样.

{

    UIBackgroundTaskIdentifier backTaskIdentifier;

}

转载于:https://www.cnblogs.com/chims-liu-touch/p/6646062.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值