我启动了一个计时器,我运行了一个功能,在5分钟计时器结束后做一些任务,但我的应用程序进入后台,计时器停止,代码不执行。
这是我代码
func startTimerr() {
fivMinTimer?.invalidate()
let seconds = 1.0
fivMinTimer = Timer.scheduledTimer(timeInterval: seconds, target: self, selector: #selector(timerHandler(_:)), userInfo: nil, repeats: true)
}
func stopTimerr() {
fivMinTimer?.invalidate()
}
@objc func timerHandler(_ timer: Timer) {
self.timee += 1
debugPrint("timer is -> >>> >>>>",timee)
if timee == 300 {
self.stopTimerr()
**// want to execute code here**
}
我在后台线程上启动计时器。这是否可能在后台激活计时器。请建议。
1条答案
按热度按时间6rqinv9w1#
是的,iOS应用程序可以在后台运行计时器。
不过,iOS操作系统对后台进程有一定的限制,包括定时器,默认情况下,当应用移至后台或设备锁定时,iOS会暂停应用的执行。
要在后台运行计时器,您的应用必须首先请求用户的权限并启用相应的后台模式。您可以通过在Xcode中为应用的目标添加“后台模式”功能,并根据您的具体用例选择“后台获取”或“远程通知”选项来实现这一点。
参见:https://developer.apple.com/documentation/backgroundtasks/bgtaskscheduler
一旦您的应用被授予权限并启用后台模式,您就可以使用计时器执行后台任务,例如刷新数据、发送位置更新或下载新内容。但是,请记住,您的应用在后台运行的时间以及执行后台任务的频率仍有限制。
此外,重要的是要注意,在后台运行计时器会影响设备的电池寿命,因此只有在必要时才明智地使用它们。
示例: