1

를 분석 유지 :DidEnterBackground는 ASIHTTP 요청을 기다리고 그리고 아마 당신이 처리 할 수있는 적절한 방법을 찾아야하는 데 도움이 수 결과

  1. 나는 NSTimer가 시작 클래스를 발생하는 (내 AppDelegate에 시작)이 비동기 서버 요청 (I는 ASIFormDataRequest 사용) HTTP JSON 응답이 수신
  2. , 난 TouchJSON
  3. 하여 파싱 그럼 루프 NSDictionary에 내가 유저에 컨텍스트를 저장
  4. 이어서 전용 NSManagedObjectContext 채우기 위해 수득 상호 작용

간혹 HTTP 요청이 전송되고 사용자가 응용 프로그램을 종료하는 경우가 있습니다. 백그라운드에서 2 ~ 4 단계 과제를 완료하려면 추가 시간을 갖기를 원합니다.

나는 Apple doc을 읽었지만, 이미 시작된 비동기 작업을위한 추가 시간을 얻는 방법은 아직 명확하지 않습니다.

즉, beginBackgroundTaskWithExpirationHandler는 어떻게 사용해야합니까?

매우 유용한 도움을 주셔서 감사합니다.

Kheraud

+0

비동기 적으로 요청을 시작하려면'startAsynchronous'를 사용하고 있습니까? –

+0

예 startAsynchronous를 사용 중입니다. – iwalktheline

답변

2

ASIHTTPRequest 백그라운드에서 요청을 실행 지원 :

[request setShouldContinueWhenAppEntersBackground:YES]; 

당신이 할 경우 위임 알림 내부의 2-4 단계를 당신이 원하는 일을해야 그 다음 위의 플래그를 설정합니다.

응용 프로그램이 백그라운드로 들어가면 사용자와 상호 작용할 수 없습니다.

+0

예! 그것은 중대하게 들린다. appDelegate 메서드가 배경 모드를 종료 할 때마다 발생한다는 것을 알고 있습니까? (배경 계산이 끝났습니다) 이 방법을 사용하여 컨텍스트를 저장 할 수 있습니다. – iwalktheline

+0

그것에 대해 별도의 질문을하는 것이 가장 좋습니다. 아마도 ASINetworkQueue에 요청을 넣은 다음 대기열의 didFinish 대리자를 사용하면 그렇게 할 수도 있지만, 정확히 무엇을 하려는지 정확히 이해하지 못했습니다. – JosephH