2016-06-22 3 views
0

applicationWillTerminate 메서드에서 NSURLConnection 메서드를 통해 NSURLRequest을 보내려고합니다. 요청은 클라이언트 측에서 호출되지만 내 서버 측으로 전달되지 않습니다.NSWRLConnection on applicationWillTerminate

- (void)applicationWillTerminate:(UIApplication *)application 
{ 
    [self sendRandomRequestToServer]; 
} 

나는 종료 프로세스를 죽이기 때문에

내가 맞죠 것 같아요?

그렇다면 어떻게 해결할 수 있습니까?

감사합니다!

UPDATE - 나는 오초에 대해 알고

사과 그래서 난 실험을 한 당신을 준다 -

내가 주 스레드에서 끝없는 while 루프를 실행하고 2 분 동안 계속 실행하려 willTerminate에!

afterDelay 0.1 및 dispatchAfter 0.1을 willTerminate에 사용하는 백그라운드 스레드에서 메소드를 호출했으며 둘 다 호출되지 않았습니다!

그래서 나는 당신이 applicationWillTerminate에서 백그라운드에서 코드를 실행하지 않아야 규칙

+0

실제로 'applicationWillTerminate'가 호출되었는지 확인 했습니까? – Code

+0

예, NSLog는 applicationWillTerminate에서 작동했습니다. – ozd

+0

5 초 규칙은 사용자가 UIApplicationExitsOnSuspend를 true로 설정 한 경우에만 적용됩니다.이 경우 사용자가 앱을 다른 곳으로 전환하면 앱이 즉시 종료됩니다. 일반적으로 앱 종료는 시스템에 리소스가 부족한 경우에만 발생하기 때문에 어떤 시점에서든 작업을 차단하지 않으려 고합니다. 앱이 배경으로 이동할 때 요청합니다. – dgatwood

답변

1

은 "5 초"신뢰하지 않는다.

  • 주 스레드가 삭제되면 백그라운드 스레드가 여전히 작동하더라도 프로세스가 종료됩니다.

  • applicationWillTerminate은 주 스레드에서 실행되는 마지막 코드 블록입니다. 즉, dispatch_after(time, mainThread)은 호출되지 않습니다.

+0

고마워,하지만 이건 나를위한 대답이 아니야. 내 대답을 업데이트했습니다. – ozd

+0

@ozd 게시물 편집을 참조하십시오. – Code