簡體   English   中英

iOS 應用程序進入后台時運行的計時器

[英]Timer to run when iOS app goes to background

我在我的應用程序中運行一個計時器,5 分鍾結束 5 分鍾我正在播放聲音,當應用程序在前台時效果很好,

但是當應用程序進入后台計時器停止工作時,我不想使用本地通知,我還能做些什么讓它在后台工作。

你不應該通過設置定時器來解決這個問題,因為你不能在后台執行任何代碼。 想象一下,如果用戶在此期間重新啟動他的 iPhone 或在其他一些極端情況下會發生什么。

使用 AppDelegate 的 applicationDidEnterBackground: 和 applicationWillEnterForeground: 方法來獲得你想要的行為。 它更加健壯,因為當您的應用程序因重新啟動或 memory 壓力而完全終止時,它也可以工作。

當您的應用程序進入后台時,您可以保存計時器接下來將觸發的時間,並檢查當應用程序返回前台時您是否應該采取行動。 同樣在此方法中停止和啟動計時器。 當您的應用程序正在運行時,您可以使用計時器在正確的時刻觸發更新。

但這里是后台定時器的代碼:

var bgTask = UIBackgroundTaskIdentifier()
bgTask = UIApplication.shared.beginBackgroundTask(expirationHandler: {
    UIApplication.shared.endBackgroundTask(bgTask)
})
let timer = Timer.scheduledTimer(timeInterval: 10, target: self, selector: #selector(notificationReceived), userInfo: nil, repeats: true)
RunLoop.current.add(timer, forMode: RunLoopMode.defaultRunLoopMode)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM