실행 중에 작성한 이상한 동작을보고 디버그 파일을 조사했습니다. 응용 프로그램에서 NSURLConnction
을 사용하여 서버에서 일부 데이터를 검색합니다. 연결이 시작된 다음 홈 버튼 (application:willResignActive
및 application:didEnterBackground
메서드가 호출 됨)을 눌러 응용 프로그램을 백그라운드로 이동할 수있었습니다. application:didEnterBackground
이 호출 된 후 연결이 코드에서 처리 된 것을 볼 수 있습니다. (connectionDidFinishLoading
의 NSURLConnection
대리인은 application:didEnterBackground
다음에 호출되었습니다.) connectionDidFinishLoading
의 구현에서 일부 작업을 수행하지만이 시점에서 응용 프로그램이 일시 중단되고 코드가 호출되지 않았습니다. 그런 다음 거의 12 시간 동안 사용자가 응용 프로그램을 다시 시작한 후 (종료되지 않았지만 백그라운드에만 있음) 코드는 application:willEnterForeground
및 application:didBecomeActive
이 호출되기 전에 중단 된 동일한 지점에서 계속 실행되었습니다. 장면을 만드나요? 응용 프로그램을 포 그라운드로 입력하기 전에 실행중인 코드 부분이 내 응용 프로그램 내부 상태를 변경하여 이상한 동작을 일으 킵니다.응용 프로그램이 백그라운드로 들어간 후 네트워크 작업을 계속 수행합니까?
어떻게 해결할 수 있습니까?
답변 해 주셔서 감사합니다. 연결이 매우 짧아서 응용 프로그램의 5 초 제한 인 didEnterBackground 전에 종료되었습니다. 디버그 파일에서 didEnterBackground가 호출 된 것을 볼 수 있습니다. 그런 다음 몇 밀리 초 후에 연결이 종료되었습니다 (didFinishLoading이 호출되었습니다) – user1513930