GCDを利用してプログラムをバックグラウンドで長く実行させる

897 ワード

GCDを使用していない場合、appがホームキーを押して終了した後、appは最大5秒でリソースを保存またはクリーンアップする作業を行います.しかし、GCDを使用すると、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;
}