App進入后台,(絕大部分情況下)會暫停執行代碼,進入掛起狀態。
有時候,某個任務進入后台后,我們希望它完成任務后再掛起。可以用UIBackgroundTaskIdentifier標記該任務,任務結束后再結束標記。標記之后的任務,在執行的時候,即使App進入后台,也會執行完成(大約有不超過10分鍾的時間)后再掛起App。
var counterTask: UIBackgroundTaskIdentifier? //開始標記為支持后台執行 counterTask = UIApplication.shared.beginBackgroundTask(expirationHandler: { () -> Void in // 超過10分鍾后,會進入到這里 }) //長時間執行任務,(進入后台后,大約有10分鍾的執行時間,超過之后程序會掛起) //do something //結束標記 UIApplication.shared.endBackgroundTask(counterTask)