如何在应用程式达到背景时保持计时器计时

时间:2018-09-19 13:07:04

标签: ios swift xcode

我为番茄技术准备了一个CountDown计时器。我想知道当应用程序到达后台时如何不暂停它。我有一种方法,将UILabel从20分钟更新为1秒,从0开始。当计时器达到0时,它将播放声音并振动设备。当应用程序在前台启动时,一切正常,但是如何在后台启动呢?当应用程序处于后台模式时,是否可以跟踪计时器更改?

BR iMat

4 个答案:

答案 0 :(得分:1)

  • 当应用程序进入后台时,计时器无效。存储剩余时间remainingTime和当前时间backgroundTime。 (您可以使用Date()获取当前时间)

  • 比较应用返回backToForegroundTime时的当前时间backgroundTime。减去它们以获得经过的时间timeElapsed

  • 如果timeElapsed小于remainingTime,请从remainingTime中减去该金额,然后使用新的持续时间再次创建计时器。

答案 1 :(得分:1)

简短的回答是“否”。当应用程序在后台运行时,VC上的计时器将不会继续运行,因为它进入了暂停模式。

您可以安排在应用程序在后台运行时触发本地通知,但就更新UI标签而言,您必须在用户返回应用程序时对其进行更新。

答案 2 :(得分:0)

您可以在此gist中使用我的方法。只需创建重复计时器并更新重复块中所需的内容,然后在主队列或后台队列中的其他块中处理计时器完成! 很高兴为您提供帮助!

答案 3 :(得分:0)

Apple定义了一组特定的任务,应用程序可以在后台执行。 不幸的是,运行计时器不是其中之一。 有关更多详细信息,请阅读应用程序编程指南的Background Execution部分。

大多数打算继续在后台执行代码的应用程序都实现了允许 long running background modes之一,即使您的应用程序不需要实际功能,也可以使用它们执行他们的代码。 但是要当心,您将要做苹果明确要求您不要做的事情。如果找到,可能会导致应用商店被拒绝。