在以前,當 app 被按 home 鍵退出后,僅有最多 5 秒鐘的時間做一些保存或清理資源的工作。但是應用可以調用 UIApplication 的beginBackgroundTaskWithExpirationHandler方法,讓 app 最多有 10 分鐘的時間在后臺長久運行。這個時間可以用來做清理本地緩存,發送統計數據等工作。
示例代碼如下:
// AppDelegate.m文件
#import "AppDelegate.h"
@interface AppDelegate ()
// 程序后臺任務標志位
@property (assign, nonatomic) UIBackgroundTaskIdentifier backgroundUpdateTask;
@end
// app已經進入后臺
- (void)applicationDidEnterBackground:(UIApplication *)application {
// 開始后臺長久運行任務
[self beginBackgroundUpdateTask];
/**
* 添加需要后臺長久運行的任務代碼
*/
// 結束后臺長久運行任務
[self endBackgroundUpdateTask];
}
// 開始后臺長久運行任務
- (void)beginBackgroundUpdateTask {
self.backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[self endBackgroundUpdateTask];
}];
}
// 結束后臺長久運行任務
- (void)endBackgroundUpdateTask {
[[UIApplication sharedApplication] endBackgroundTask:self.backgroundUpdateTask];
self.backgroundUpdateTask = UIBackgroundTaskInvalid;
}