Brak opisu

BGTask.swift 1.6KB

    // // BGTask.swift // PaiAi // // Created by zhengjianfei on 2016/12/23. // Copyright © 2016年 FFIB. All rights reserved. // import UIKit class BGTask: NSObject { static let instance = BGTask() var bgTaskIdlist = [Int]() var masterTasjId = UIBackgroundTaskIdentifier() class func shareTask() -> BGTask { return instance } func beginNewBackgroundTask() -> UIBackgroundTaskIdentifier { let application = UIApplication.shared var bgTaskId = UIBackgroundTaskInvalid bgTaskId = application.beginBackgroundTask(expirationHandler: { self.bgTaskIdlist = self.bgTaskIdlist.filter({ (taskId) -> Bool in return taskId != bgTaskId }) }) if masterTasjId == UIBackgroundTaskInvalid { masterTasjId = bgTaskId } else { bgTaskIdlist.append(bgTaskId) endBackgroundTask(all: false) } return bgTaskId } func endBackgroundTask(all: Bool) { let application = UIApplication.shared for _ in 0..<(all ? bgTaskIdlist.count : bgTaskIdlist.count - 1) { let bgTaskId = self.bgTaskIdlist.first application.endBackgroundTask(bgTaskId!) bgTaskIdlist.removeFirst() } if self.bgTaskIdlist.count > 0 { printLog("后台任务正在保持运行\(String(describing: bgTaskIdlist.first))") } if all { application.endBackgroundTask(masterTasjId) self.masterTasjId = UIBackgroundTaskInvalid } else { printLog("keep master background task id \(masterTasjId)") } } }