当应用程序进入和退出后台时更新ios中的计时器
Posted
技术标签:
【中文标题】当应用程序进入和退出后台时更新ios中的计时器【英文标题】:Updating a timer in ios when app goes in and out of background 【发布时间】:2018-08-11 18:31:33 【问题描述】:我有一个应用,它在视图控制器中有一个计时器,从 5 分钟倒计时到 0:00。
根据 ios/Apple 应用暂停规则,当应用进入后台时它会停止。
我如何在它进入睡眠之前获取时间并在它回来时在几秒钟内更新它?我知道您不能长时间使用后台处理,因此请避免这样做。
【问题讨论】:
看看***.com/a/50200606/1630618 尝试将值保存在 applicationwillenterbackground 内的用户默认值中。并在可能 didfinishlaunching (appdelegate.swift) 中检索值 【参考方案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... “这种方法是不必要的,不应该使用。”以上是关于当应用程序进入和退出后台时更新ios中的计时器的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序处于后台并且网络连接丢失时,位置更新计时器不起作用?
Swift - 当应用程序进入后台状态时,从 AppDelegate 更新 RootViewController 中的值