代码改变世界

UIBackgroundTaskIdentifier 进入后台后结束任务再挂起APP

2019-01-15 14:20  法子  阅读(2335)  评论(0编辑  收藏  举报

App进入后台,(绝大部分情况下)会暂停执行代码,进入挂起状态。

有时候,某个任务进入后台后,我们希望它完成任务后再挂起。可以用UIBackgroundTaskIdentifier标记该任务,任务结束后再结束标记。标记之后的任务,在执行的时候,即使App进入后台,也会执行完成(大约有不超过10分钟的时间)后再挂起App。

       var counterTask: UIBackgroundTaskIdentifier?
        
        //开始标记为支持后台执行
        counterTask = UIApplication.shared.beginBackgroundTask(expirationHandler: { () -> Void in
            // 超过10分钟后,会进入到这里
        })
        
        
        //长时间执行任务,(进入后台后,大约有10分钟的执行时间,超过之后程序会挂起)
        //do something
        
        
        
        //结束标记
        UIApplication.shared.endBackgroundTask(counterTask)