Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 后台快速定时器_Ios_Swift_Timer_Background - Fatal编程技术网

Ios 后台快速定时器

Ios 后台快速定时器,ios,swift,timer,background,Ios,Swift,Timer,Background,我通过地理围栏的触发器在iOS中创建一个后台任务。在这种背景下,我启动一个计时器来倒计时,以超时此任务。然而,这个计时器工作不正常,可能会在10秒后暂停,并在我将应用程序绑定到前台时恢复 我需要帮助使这个计时器在10分钟内正常工作。 这是我的密码 @objc func timeoutChecking(_ timer: Timer) { print("time \(self.currentTime)") if self.currentTime != TIME_SEARCH {

我通过地理围栏的触发器在iOS中创建一个后台任务。在这种背景下,我启动一个计时器来倒计时,以超时此任务。然而,这个计时器工作不正常,可能会在10秒后暂停,并在我将应用程序绑定到前台时恢复

我需要帮助使这个计时器在10分钟内正常工作。 这是我的密码

@objc func timeoutChecking(_ timer: Timer) {
    print("time \(self.currentTime)")
    if self.currentTime != TIME_SEARCH {
        self.currentTime += 1
    }
    else {
        // Time out
        self.stopChecking()
    }
}

几秒钟后,不可能在后台连续运行计时器。苹果可能会丢弃计时器

您可以做一件事,在
applicationIdentinterbackground
中获取一个全局变量add set current time,然后
applicationWillEnterForeground
检查此方法获取当前系统时间和存储的上一次时间比较这两次,并获取它们之间的差异,然后检查is

if self.currentTime != TIME_SEARCH {
        self.currentTime += 1
    }
    else {
        // Time out
        self.stopChecking()
}

您必须在此处进行检查,如
if self.currentTime>TIME\u SEARCH
if self.currentTime
,以便获得完美的结果:

这是因为您在
main
线程中启动了计时器