【问题标题】:How to build a stopwatch that continues counting when app is closed?如何构建一个在应用程序关闭时继续计数的秒表?
【发布时间】:2021-08-29 19:04:51
【问题描述】:

我尝试在 Swift 中构建一个秒表,它可以工作,但是当你退出应用程序时它会停止计数,并且只有在你重新打开它时才会继续。我用过:

Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(stopwatchFunction), userInfo: nil, repeats: true)

有没有什么方法可以让秒表在应用关闭的情况下继续计数?

【问题讨论】:

    标签: ios swift timer stopwatch


    【解决方案1】:

    在应用关闭时保存当前时间和计时器的时间。您可以使用用户默认值,或任何适合您的方法。再次打开时,使用当前时间计算差值并进行相应调整。

    【讨论】:

      【解决方案2】:

      简短的回答是,你不能。要在您的应用关闭时真正保持计时器运行,您的应用需要继续接收处理器时间。 Apple 不允许任何应用程序在后台无限期运行,只有非常有限的一组应用程序(逐步导航应用程序、音乐播放器和 VoIP 应用程序)

      @forot 告诉你如何模拟它。 (已投票。)如果您收到应用程序被暂停的通知,请保存当前时间和剩余时间,例如 UserDefaults。当你回来时,获取新的当前时间,计算已经过去了多少时间,并相应地更新你的计时器。

      如果在您暂停/终止时计时器到期,您将无能为力。

      您可以设置本地通知以在您的计时器到期时触发。然后,用户可以点击通知并重新启动您的应用(如果他们愿意)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多