【问题标题】:Updating a timer in ios when app goes in and out of background当应用程序进入和退出后台时更新ios中的计时器
【发布时间】:2018-08-11 18:31:33
【问题描述】:

我有一个应用,它在视图控制器中有一个计时器,从 5 分钟倒计时到 0:00。

根据 ios/Apple 应用暂停规则,当应用进入后台时它会停止。

我如何在它进入睡眠之前获取时间并在它回来时在几秒钟内更新它?我知道您不能长时间使用后台处理,因此请避免这样做。

【问题讨论】:

  • 尝试将值保存在 applicationwillenterbackground 内的用户默认值中。并在可能 didfinishlaunching (appdelegate.swift) 中检索值

标签: ios swift timer swift4 ios11


【解决方案1】:

似乎是 UserDefaults 的一个很好的用例。 这可以在您的主视图控制器中完成。

ViewController.swift

let defaults = UserDefaults.standard

var timer = Timer()
var timerCount = 300

override func viewDidLoad() {
    super.viewDidLoad()

    let timeLeft = defaults.integer(forKey: "timerLeft1")
    if timeLeft != 0 {
        timerCount = timeLeft
    }

    startTimer()
}

func startTimer() {
    timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateCounter), userInfo: nil, repeats: true)
}

@objc func updateCounter() {
    if timerCount > 0 {
        timerCount -= 1
        defaults.set(timerCount, forKey: "timerLeft1")
    } else {
        timerCount = 300
    }
}

苹果文档:UserDefaults

【讨论】:

  • 不要致电.synchronize()。来自Apple's documentation... “这种方法是不必要的,不应该使用。”
猜你喜欢
  • 2012-02-11
  • 2023-03-11
  • 2012-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多