我想在iOS8上应用程序处于后台模式时运行定期任务。我用swift编写了下面的代码,但是失败了。有人能指出哪里不对劲吗?
这是我的AppDelegate.swift代码

let backgroundQueue = dispatch_get_global_queue(QOS_CLASS_BACKGROUND,0)

func applicationDidEnterBackground(application: UIApplication) {
    println("did enter background")
    dispatch_async(self.backgroundQueue, myBackgroundTask)
}

func myBackgroundTask() {
    NSThread.sleepForTimeInterval(0.5)
    println("this is back ground task")
    dispatch_async(self.backgroundQueue, myBackgroundTask)
}

最佳答案

有人告诉我叫“beginBackgroundTaskWithName”就是答案。

func applicationDidEnterBackground(application: UIApplication) {
    println("did enter background")
    application.beginBackgroundTaskWithName("myBgTask", expirationHandler: nil)
    dispatch_async(self.backgroundQueue, myBackgroundTask)
}

func myBackgroundTask() {
    NSThread.sleepForTimeInterval(0.5)
    println("this is back ground task")
    dispatch_async(self.backgroundQueue, myBackgroundTask)
}

关于swift - 在iOS8上以后台模式运行定期任务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27338027/

10-09 09:14