저는 Xamarin.iOS와 협력하여 Downloadmanager를 구현하고 있습니다.Xamarin.iOS 다운로드 관리자
신속하게 DownloadManager를 구현하는 방법에 대한 자습서를 찾았습니다. 자습서를 통해 신속하게 C#으로 작성된 논리를 복사했습니다. DownloadManager는 작업을 처리하고 대기열에 넣고 실행합니다. 내가 직면하고있는 유일한 문제는 일시 중지 모드로의 앱 전환입니다. 큐의 동작은 결정적이지 않습니다. 때로는 대기중인 작업이 모두 실행되고 때로는 앱이 실행을 중지하는 경우가 있습니다.
사용 사례 1 : 파일 동기화를 시작하고 iPad를 잠급니다. 대부분 대기중인 작업이 실행됩니다. 하지만 때로는 내가 iPad의 잠금을 해제하면 응용 프로그램이 백그라운드로 전송되며 응용 프로그램으로 돌아가려면 홈 버튼을 두 번 눌러야합니다.이 경우 파일 동기화가 실행 중간에 중단되었습니다.
사례 2 : 파일 동기화를 시작하고 배경으로 앱을 보냅니다. 앞의 사용 예제와 같은 동작. 때로는 모든 작업이 실행되고 때로는 작업이 중지되는 경우도 있습니다.
사례 3 : 고객이 동기화를 시작하고 잠시 후 동기화가 완료되지 않고 응용 프로그램이 백그라운드에서 iPad를 자동으로 나가게합니다. 평균 약 70 %의 동기화가 수행됩니다.
구현을 위해 "DownloadOperation"을 요소로 사용하는 "NSOperationQueue"를 사용했습니다. "DownloadOperation"은 "비동기"로 설정된 실행을 가진 NSOperation 객체의 래핑 된 것입니다.
가능한 질문
- 나는 응용 프로그램이 상태를 변경할 때 "NSOperationQueue"어떻게되는지 확실하지 않다?
- "NSOperationQueue"의 사용법은 DownloadManager의 구현과 관련된 "올바른"방법입니까?
- 토론을 기대하겠습니다은 "NSOperationQueue"및/또는 "NSOperation"
의 실행의 최적화에 대한 일반적인 팁이있다.
P. "배경 모드"와 "배경 가져 오기"를 활성화했습니다
취소 트리거가 필요하다고 생각합니다. 작업에 대해서는이 작업을 수행 할 수 있지만 NSOperationQueues에 대해서는 확실하지 않습니다. cancallation trigger를 구현하는 것이 가능하다면, 작업이 멈추는 지, 그리고 app reload가 그것을 처리 할 수 있는지 알 수 있습니다. – Digitalsa1nt
@ Digitalsa1nt 작업을 취소하고 싶지 않습니다. 응용 프로그램이 종료 된 후에도 작업을 계속하기를 원합니다. 이것이 NSOperations와 함께 OperationQueue 및 NSUrlSession을 사용하는 이유입니다. 그러나 누군가 당신의 문제에 대한 단서를 가지기를 바랍니다. –
iOS가 애플리케이션을 종료 한 후에도 코드가 계속 실행되지 않도록 할 수 있습니다. 사과 지침에 위배된다고 말해야합니까? 희망을 갖고 누군가가 당신을 위해 일을 찾을 수 있기를 바랍니다. :) – Digitalsa1nt