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;
}