使用block的另一個用處是可以讓程序在后台較長久的運行。在以前,當app被按home鍵退出后,app僅有最多5秒鍾的時候做一些保存或清理資源的工作。但是應用可以調用UIApplication的beginBackgroundTaskWithExpirationHandler
方法,讓app最多有10分鍾的時間在后台長久運行。這個時間可以用來做清理本地緩存,發送統計數據等工作。
讓程序在后台長久運行的示例代碼如下:
// AppDelegate.h文件 @property (assign, nonatomic) UIBackgroundTaskIdentifier backgroundUpdateTask; // AppDelegate.m文件 - (void)applicationDidEnterBackground:(UIApplication *)application { [self beingBackgroundUpdateTask]; // 在這里加上你需要長久運行的代碼 [self endBackgroundUpdateTask]; } - (void)beingBackgroundUpdateTask { self.backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ [self endBackgroundUpdateTask]; }]; } - (void)endBackgroundUpdateTask { [[UIApplication sharedApplication] endBackgroundTask: self.backgroundUpdateTask]; self.backgroundUpdateTask = UIBackgroundTaskInvalid; }