2012-07-26 6 views

답변

1

은 다음 코드를 참조하십시오.

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    UIApplication* app = [UIApplication sharedApplication]; 

    //Create a task object 
    __block UIBackgroundTaskIdentifier backgroundTask; 

    backgroundTask = [app beginBackgroundTaskWithExpirationHandler:^{ 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      if (backgroundTask != UIBackgroundTaskInvalid) { 
       [app endBackgroundTask:backgroundTask]; 
       backgroundTask = UIBackgroundTaskInvalid; 
      } 
     }); 
    }]; 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      if (backgroundTask != UIBackgroundTaskInvalid) { 

       // do stuff    

       [app endBackgroundTask:backgroundTask]; 
       backgroundTask = UIBackgroundTaskInvalid; 
      } 
     }); 
    }); 
} 
1

응용 프로그램이 백그라운드로 이동 한 후 제한된 시간 동안 작업을 수행 할 수 있지만 제공된 기간 동안 만 작업을 수행 할 수 있습니다. 이 기간 이상 실행하면 응용 프로그램이 종료됩니다. 이 문제를 해결하는 방법은 iOS Application Programming Guide의 "Completing a Long-Running Task in the Background"섹션을 참조하십시오.

관련 문제