当应用进入和退出后台时,在iOS中更新计时器

时间:2018-08-11 18:31:33

标签: ios swift timer swift4 ios11

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

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

我该如何把握进入睡眠状态的时间并在恢复到几秒钟后更新呢?我知道您不能长时间使用后台处理,因此请避免使用它。

1 个答案:

答案 0 :(得分:-1)

似乎是UserDefaults的一个很好的用例。 这可以在主视图控制器中完成,但请确保在应用程序委托中调用syncnize()方法,以确保当应用程序进入后台时,代码将默认值写入磁盘。

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
    }
}

Apple文档:UserDefaults