iOS开发之后台运行调用beginBackgroundTaskWithExpirationHandler
2017-03-30 14:27
369 查看
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;
}
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;
}
相关文章推荐
- IOS 后台之长时间任务 beginBackgroundTaskWithExpirationHandler 申请后台十分钟 600秒
- ios 开启后台任务,beginBackgroundTaskWithExpirationHandler 使用细节问题备忘
- beginBackgroundTaskWithExpirationHandler
- IOS开发模块总结(二)后台运行程序(2)Task completion-UIBackgroundTaskIdentifier
- beginBackgroundTaskWithExpirationHandler
- beginBackgroundTaskWithExpirationHandler
- beginBackgroundTaskWithExpirationHandler
- beginBackgroundTaskWithExpirationHandler
- IOS高级开发~开机启动&无限后台运行&监听进程
- IOS高级开发~开机启动&无限后台运行&监听进程
- phonegap ios插件开发及无限后台运行解决
- IOS自动化调用UIAHost.performTaskWithPathArgumentsTimeout()方法调用外部程序的
- IOS高级开发~开机启动&无限后台运行&监听进程
- iOS开发:保持程序在后台长时间运行
- IOS高级开发~开机启动&无限后台运行&监听进程
- iOS高级开发, 开机启动, 无限后台运行, 监听进程
- phonegap ios插件开发及无限后台运行解决
- Completing a Long-Running Task in the Background(在后台完成长时间运行的任务)
- IOS高级开发~开机启动&无限后台运行&监听进程
- iOS开发笔记--iOS 无限后台运行