簡體   English   中英

Swift和macOS:當應用程序在后台運行時,Timer會延遲運行

[英]Swift & macOS: Timer works with delay when app works in background

我有一個macOS應用,該應用具有計時器並每秒增加數字。 每隔60秒,我會顯示一條通知並顯示一些消息。

我發現我的macOS Swift應用程序運行有些延遲,並且在大約10分鍾后開始進入睡眠狀態(沒有新的顯示;不再顯示)。

我找到了一些解決方案,例如:

private func startTimer() {
    timer = Timer.scheduledTimer(
        timeInterval: 1.0,
        target: self,
        selector: #selector(timerTick),
        userInfo: nil,
        repeats: true
    )
    RunLoop.main.add(timer, forMode: RunLoopMode.commonModes)
}

但是此命令並沒有幫助我解決計時器的后台運行滯后問題:RunLoop.main.add(timer,forMode:RunLoopMode.commonModes)

需要一些經驗豐富的Swift家伙來幫助我解決這個有趣的挑戰。 我需要正確計算后台應用程序中的秒數,因為我的應用程序每隔幾分鍾就會顯示一次警報消息,如果無法正確顯示這些警報,則我的應用程序將無法正常運行。

謝謝!

我敢打賭,您正在遇到App Nap 您確實擁有一些控制權,可以通過NSProcessInfo告訴系統不應使用App Nap結束您的進程。

您也許還可以嘗試禁用App Nap defaults write <app domain name> NSAppSleepDisabled -bool YES ...但不確定是否仍然有效(App Nap是OS X 10.9中引入的,因此三年的時間可能是已禁用禁用功能...)

暫無
暫無

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

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