iOS开发之临时后台任务
在开发工作中经常会遇到需要使用后台模式的场景。而手机进入后台后一般会有三种情况:
- 没有任何设置,进入后台后几秒钟后就会变为挂起状态。
- 设置临时后台任务,进入后台后,程序会持续保持活跃持续三分钟左右。
- 设置长久后台任务,理论上无限制。比如:持续播放音乐、持续定位等功能。
而本篇主要介绍一下临时后台任务的使用。临时后台任务使用场景,比如验证码倒计时功能,为了防止进入后台后计时器不继续执行。
示例代码如下:
/// 后台任务 ID
private var backgroundTaskId: UIBackgroundTaskIdentifier?
...
/// 开始后台任务
/// 1. 如果任务 id 存在,则不继续执行。
/// 2. 创建后台任务,
/// 3. 设置后台任务到期的执行代码。
@objc func startBackgroundTask() {
if self.backgroundTaskId != nil { return }
self.backgroundTaskId = UIApplication.shared.beginBackgroundTask { [weak self] in
guard let `self` = self else { return }
self.stopBackgroundTask()
}
}
/// 结束后台任务
/// 1. 如果任务 ID 不存在,则不继续执行。
/// 2. 结束对应id 的后台任务
/// 3. 对于后台任务 id 销毁,并设置为 nil。
@objc func stopBackgroundTask() {
guard let backgroundTaskId = self.backgroundTaskId else { return }
UIApplication.shared.endBackgroundTask(backgroundTaskId)
self.backgroundTaskId = UIBackgroundTaskIdentifier.invalid
self.backgroundTaskId = nil
}
iOS开发之临时后台任务
原文地址:https://www.cnblogs.com/xueshengadu/p/ios-kai-fa-zhi-lin-shi-hou-tai-ren-wu.html