2012-06-19 3 views
0

저는 현재 작업중인 응용 프로그램의 제출 대기열을 구현하고 있습니다. 이 응용 프로그램은 네트워크 가용성의 변화에 ​​대응하도록 설계되었습니다. 대기열에 객체가 있고 네트워크 연결을 사용할 수있게되면 응용 프로그램은 대기열에 객체를 제출하기 시작합니다. 객체는 응용 프로그램이 포 그라운드에있을 때 완벽하게 작동합니다. 응용 프로그램이 백그라운드로 들어가고 대기열이 제출할 때 수행하고 싶은 작업은 모두 대기열 제출을 시도 할 때까지 대기열 제출을 계속 진행해야합니다. 큐 제출iOS 계속 진행할 작업

내 방법은 :

-(void)submitAll { 
    dispatch_async(dispatch_get_global_queue(DISPTACH_PRIOROITY_DEFAULT,0) ^(void){ 
     self.submitting = TRUE; 
     for (id queueObject in theQueue) { 
      [self submitQueueObject:queueObject]; 
     } 
     self.submitting = FALSE; 
    }); 
} 

는 애플리케이션이 배경에 진입 할 때 상기 루프 continiue이 가능한가? 당신이 10 분 이내에 완료 할 수있는 경우

답변

2

, 당신은

UIApplication:beginBackgroundTaskWithExpirationHandler: 

+0

그것은 10 분 이내에 완료해야 전경에서 이동 한 후 계속 실행하는 데 사용할 수있는,하지만 난 어떻게 후크 것 이미 실행중인 루프에? –

+1

후크하지 않아도됩니다. 포 그라운드에서 작업 한 코드는 앱이 백그라운드에있을 때처럼 계속 작동합니다. beginBackgroundTaskWithExpirationHandler : 백그라운드에서 계속 실행 권한을 요청하는 것과 같습니다. (이 이름은 실제로 뭔가를하기 시작하거나 전화 할 때 특정 작업을 실행해야 함을 의미합니다. beginBackgrounTaskWithExpirationHandler : 앱이 활성화 될 때마다 호출합니다. – Gruntcakes

관련 문제