在iOS8上以后台模式运行定期任务

时间:2014-12-07 00:06:35

标签: swift background ios8

我希望在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)
}

2 个答案:

答案 0 :(得分:1)

有人告诉我打电话" 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)
}

答案 1 :(得分:0)

您是否尝试使用:

dispatch_async(self.backgroundQueue, Selector("myBackgroundTask"))

我不确定这是不是这样,但是在快速传递func作为参数通常是这样的。