我正在使用通过蓝牙连接到配件的应用程序,如果应用程序崩溃以在后台恢复连接,我已实施状态保存和恢复。
当iOS通过jetsamevent
崩溃/关闭应用时,它会再次重新启动,并且在didFinishLaunchingWithOptions
方法中,我已经实施了后台任务,以便让应用有更多时间重新启动连接到上一个外围设备,它将给应用程序〜3分钟扫描外围设备。
以下是我用于开始和结束后台任务的代码:
var backgroundTask: UIBackgroundTaskIdentifier = UIBackgroundTaskInvalid
func registerBackgroundTask() {
backgroundTask = UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler {
[unowned self] in
self.endBackgroundTask()
}
}
func endBackgroundTask() {
UIApplication.sharedApplication().endBackgroundTask(backgroundTask)
backgroundTask = UIBackgroundTaskInvalid
}
我在发布时(registerBackgroundTask
)
didFinishLaunchingWithOptions
问题是,在某些时候,endBackgroundTask
被调用,应用程序(似乎)移动到暂停状态并在随机时间后再次回到后台状态,有时3分钟,15分钟或3分钟小时。
注意:
我已使用Apple documentation来实施状态保存和恢复,第State Preservation and Restoration
部分