早期版本的中國大學(xué)MOOC一旦被掛起后,應(yīng)用在完成當(dāng)前下載任務(wù)后無法繼續(xù)添加新任務(wù),當(dāng)然也無法將緩存狀態(tài)寫入數(shù)據(jù)庫。這個(gè)問題能否順利解決直接關(guān)系到用戶體驗(yàn)。
順便吐槽下,凡是使用了后臺(tái)文件傳輸還提示你下載過程中不要掛起應(yīng)用的,應(yīng)該都是這個(gè)問題。
那么如何解決呢?
解決問題的關(guān)鍵在于,既然應(yīng)用被掛起后App是無法執(zhí)行代碼了,但是我們還有后臺(tái)任務(wù)??!
大致的思路是,在App被掛起后,我們使用后臺(tái)任務(wù)在文件傳輸完成后根據(jù)文件傳輸?shù)臓铙w來更新數(shù)據(jù)庫,并且啟動(dòng)新的文件傳輸任務(wù)。
首先我們創(chuàng)建一個(gè)后臺(tái)任務(wù)類DownloadTask并實(shí)現(xiàn)IBackgroundTask
private BackgroundTaskDeferral _deferral; public void Run(IBackgroundTaskInstance taskInstance) { BackgroundTransferCompletionGroupTriggerDetails details = taskInstance.TriggerDetails as BackgroundTransferCompletionGroupTriggerDetails; if (details == null) { // This task was not triggered by a completion group.