【问题标题】:Swift timer in background后台快速计时器
【发布时间】:2018-04-26 06:54:16
【问题描述】:

我通过地理围栏的触发器在 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()
    }
}

【问题讨论】:

  • 发生这种情况是因为您在 main 线程中触发了计时器

标签: ios swift timer background


【解决方案1】:

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

你可以做一件事,取一个全局变量在applicationDidEnterBackground 中添加设置当前时间,applicationWillEnterForeground 在此方法中检查以当前系统时间和存储的先前时间比较两个时间并得到它们之间的差异,检查是,

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

您必须在这里查看if self.currentTime > TIME_SEARCHif self.currentTime < TIME_SEARCH,这样您才能获得完美的结果。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2022-01-15
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多