Статьи

Многозадачность iOS: фоновые задачи

Это третья часть серии многозадачности iOS. По сравнению с локальными уведомлениями, фоновым звуком, фоновым местоположением и VOIP (не рассматриваются в этой серии), фоновые задачи и быстрое переключение приложений проще всего реализовать. Для этого урока вы должны понимать блоки.

Для простоты этого руководства создайте приложение на основе окна, чтобы нам не приходилось иметь дело с View Controllers и дополнительными функциями (одна и та же реализация используется независимо от того, какой шаблон вы используете). Назовите его «Фоновая задача» и снимите флажки «Использовать основные данные» и «Включить юнит-тесты».

iOS_Background_Tasks

Затем откройте Background_TasksAppDelegate.m.

Теперь прокрутите вниз до applicationDidEnterBackground: метод и добавьте следующий код:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)]) { //Check if our iOS version supports multitasking IE iOS 4
    if ([[UIDevice currentDevice] isMultitaskingSupported]) { //Check if device supports mulitasking
        UIApplication *application = [UIApplication sharedApplication];
 
        __block UIBackgroundTaskIdentifier background_task;
 
        background_task = [application beginBackgroundTaskWithExpirationHandler: ^ {
            [application endBackgroundTask: background_task];
            background_task = UIBackgroundTaskInvalid;
 
            //System will be shutting down the app at any point in time now
        }];
 
        //Background tasks require you to use asyncrous tasks
 
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            //Perform your tasks that your application requires
 
            NSLog(@»\n\nRunning in the background!\n\n»);
 
            [application endBackgroundTask: background_task];
            background_task = UIBackgroundTaskInvalid;
        });
    }
}

Как видите, фоновые задачи чрезвычайно короткие и их легко реализовать. Если вам нужна помощь или вы просто хотите опубликовать предложение, оставьте комментарий ниже!