2011-07-28 6 views
2

만료 처리기가 호출되면 앱을 로그 아웃하려고합니다. 이것은 시간의 일부이지만, endBackgroundTask를 호출하여 백그라운드 작업을 끝내더라도 프로세스를 어렵게 만드는 경우가 있습니다. 이 경우 로그 아웃 프로세스가 너무 오래 걸리고 iOS가 종료하는 것처럼 보입니다. 이것은 긴 작업이 아니어야하지만 추가 시간을 요청할 수있는 방법이 있습니까?iOS가 앱을 종료하기 전에 만료 처리기에서 정상적으로 작업을 끝내려면 어떻게해야합니까?

if ([app respondsToSelector:@selector(beginBackgroundTaskWithExpirationHandler:)]) { 
     bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ 
      // Synchronize the cleanup call on the main thread in case 
      // the task actually finishes at around the same time. 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       if (bgTask != UIBackgroundTaskInvalid) { 

        backgroundKilled = true; 

        [self logoutAll]; 

        [app endBackgroundTask:bgTask]; 
             bgTask = UIBackgroundTaskInvalid; 
       } 
      }); 
     }]; 
    } 

답변

2

여기, 좋은 UIApplication delegate overview입니다 종료 될 때 앱을 통해 어떤 일이 일어나는지 설명합니다.

+0

정말 멋진 다이어그램입니다. – tjg184

-1

iOS는 백그라운드 작업에 10 분을 제공합니다. 로그 아웃 프로세스가 오래 걸리나요?

+0

우리는 실제로 최대 시간 동안 서버에 데이터를 계속 보내려고합니다. 10 분이 지나면 로그 아웃하고 싶습니다. 확인을 위해 다시 테스트 중이지만 앱이 충돌하는 곳의 보고서가 있습니다. 나는 그것을 배경 작업으로 좁혔다. – tjg184

관련 문제