10分钟

beginBackgroundTaskWithExpirationHandler,beginBackgroundTaskWithName

endBackgroundTask

 

定义变量

UIBackgroundTaskIdentifier bgTask;

 

- (void)applicationDidEnterBackground:(UIApplication *)application

{

    bgTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^{

        // Clean up any unfinished task business by marking where you

        // stopped or ending the task outright.

        [application endBackgroundTask:bgTask];

        bgTask = UIBackgroundTaskInvalid;

    }];

 

    // Start the long-running task and return immediately.

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

 

        // Do the work associated with the task, preferably in chunks.

 

        [application endBackgroundTask:bgTask];

        bgTask = UIBackgroundTaskInvalid;

    });

}

 

 

Declaration

Swift

func beginBackgroundTaskWithExpirationHandler(_ handler: (() -> Void)?) -> UIBackgroundTaskIdentifier

Objective-C

- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void (^)(void))handler

    Listing 4-2 Starting a background task at quit time    
    - (void)applicationDidEnterBackground:(UIApplication *)application    
    {    
    UIApplication* app = [UIApplication sharedApplication];    
    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{    
    [app endBackgroundTask:bgTask];    
    bgTask = UIBackgroundTaskInvalid;    
    }];    
    // Start the long-running task and return immediately.    
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,    
    0), ^{    
    // Do the work associated with the task.    
    [app endBackgroundTask:bgTask];    
    bgTask = UIBackgroundTaskInvalid;    
    });    
    }   

 

 ^{} block 语法。

dispatch_queue_create

dispatch_release

dispatch_async_f

 

Queue: dispatch_queue_t;

Queue := dispatch_queue_create('Video Capture Queue', 0);

 

posted on 2016-01-17 19:30  lypzxy  阅读(2061)  评论(0编辑  收藏  举报