我正在使用Xamarin.iOS並實施Downloadmanager。Xamarin.iOS下載管理器
我發現了一個關於如何在swift中實現DownloadManager的教程,由該教程領導,我已經將用swift編寫的邏輯轉錄到C#中。 DownloadManager工作並排隊操作並執行它們。我面臨的唯一問題是應用程序轉換到暫停模式。隊列的行爲不是那麼確定的。有時候,所有排隊的操作都會執行,有時應用會停止執行。
使用案例1: 我開始文件同步並鎖定iPad。大部分時間排隊的操作被執行。但有時當我解鎖iPad時,應用程序將發送到後臺,我必須雙擊主頁按鈕才能返回到應用程序,在這種情況下,文件同步在執行過程中以某種方式停止。
使用案例2:我開始文件同步並將應用程序發送到後臺。像以前的用例一樣。有時會執行所有操作,有時操作會停止。
使用案例3:客戶開始同步並且在他回來一段時間後,iPad無人照看,同步未完成且應用程序在後臺。平均約有70%的同步完成。
對於實現,我使用了「DownloadOperation」作爲元素的「NSOperationQueue」。 「DownloadOperation」只是NSOperation對象的包裝,其執行設置爲「異步」。
可能的問題
- 我不知道會發生什麼情況「NSOperationQueue」應用程序改變狀態的時候?
- 「NSOperationQueue」的用法是「正確」的方式去執行DownloadManager嗎?
- 是否有針對「NSOperationQueue」和/或「的NSOperation」
的執行展望討論的優化任何常見的提示。
P.S.我已啓用「背景模式」和「背景獲取」
我認爲你只需要一個取消觸發器,你可以爲任務做這件事,不確定關於NSOperationQueues。如果可以實現cancallation觸發器,您將知道操作是否停止,以及應用程序重新加載的時間是否能夠相應處理。 – Digitalsa1nt
@ Digitalsa1nt我不想取消操作,我希望它們在應用程序終止後繼續執行。這就是在NSOperations中使用OperationQueue和NSUrlSession的原因。但是,謝謝你的評論我希望有人對此問題有所瞭解。 –
在iOS終止您的應用程序後,您無法讓代碼無限期地運行。或者我應該說這是違反蘋果準則的。希望有人會爲你找到解決辦法。 :) – Digitalsa1nt