首页 > 解决方案 > 当应用程序进入和退出后台时更新ios中的计时器

问题描述

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

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

我如何在它进入睡眠之前抓住时间并在它回来时在几秒钟内更新它?我知道你不能长时间使用后台处理,所以要避免这种情况。

标签: iosswifttimerswift4ios11

解决方案


似乎是 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
    }
}

Apple 文档:UserDefaults


推荐阅读