早期版本的中国大学MOOC一旦被挂起后,应用在完成当前下载任务后无法继续添加新任务,当然也无法将缓存状态写入数据库。这个问题能否顺利解决直接关系到用户体验。
顺便吐槽下,凡是使用了后台文件传输还提示你下载过程中不要挂起应用的,应该都是这个问题。
那么如何解决呢?
解决问题的关键在于,既然应用被挂起后App是无法执行代码了,但是我们还有后台任务啊!
大致的思路是,在App被挂起后,我们使用后台任务在文件传输完成后根据文件传输的状体来更新数据库,并且启动新的文件传输任务。
首先我们创建一个后台任务类DownloadTask并实现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.