iOS通過後臺標識使程式在後臺長久執行
阿新 • • 發佈:2019-02-02
正常情況下,當應用被按Home鍵退出後,應用僅有最多5秒鐘的時間做一些儲存或者清理資源的工作。但是應用可以呼叫UIApplication的beginBackgroundTaskWithExpirationHandler方法,讓應用在後臺長久的執行。
讓程式在後臺長久執行的示例程式碼如下:
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (nonatomic, assign) UIBackgroundTaskIdentifier backgroundTask;//後臺任務識別符號
@end
@implementation AppDelegate
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"已經進入後臺");
[self beginBackgroundTask];
//需要執行的程式碼
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog (@"我還在哦");
[self endBackgroundTask];
});
}
- (void)beginBackgroundTask {
self.backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
//如果系統覺得我們還是運行了太久,將執行這個程式塊,並停止執行應用程式
[self endBackgroundTask];
}];
}
- (void)endBackgroundTask {
//告訴系統我們完成了
[[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask];
self.backgroundTask = UIBackgroundTaskInvalid;
}
@end
如果不使用後臺標識的話,GCD中的log不會列印。