iOS開發之后台運行調用beginBackgroundTaskWithExpirationHandler


APP在正常運行過程中,突然按下Home鍵或者鎖屏鍵,也或者電話接入,APP將進入后台,在幾秒鍾以后將退出程序.在程序使用socket或者播放器連接,短暫的進入后台需要保持活動狀態,以免播放器退出,socket斷開,可調用系統的beginBackgroundTaskWithExpirationHandler方法,程序進入后台AppDelegate將會使用applicationDidEnterBackground:方法,只需要在這里告訴即可.如下面

 backTaskIdentifier = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{

         [[UIApplication sharedApplication]endBackgroundTask:backTaskIdentifier];

         backTaskIdentifier = UIBackgroundTaskInvalid;

     }];

使用beginBackgroundTaskWithExpirationHandler必須要成對使用endBackgroundTask方法,因為在后台保持任務只能持續180秒的時間,可以使用[[UIApplication sharedApplication]backgroundTimeRemaining]獲取到當前在后台的剩余時間.超過180秒,不能調用當前的ID(即backTaskIdentifier)的endBackgroundTask,APP將崩潰閃退,這是Apple強制APP退出活動的結果.

需要注意:backTaskIdentifier可看成當前APP進入后台的ID號,結束后台活動也必須是當前的ID,所以需要使用全局屬性,可以當成MAC電腦上使用終端命令top查看各任務ID一樣.

{

    UIBackgroundTaskIdentifier backTaskIdentifier;

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM