中国大学MOOC中的后台文件传输
早期版本的中国大学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.
return;
}
_deferral = taskInstance.GetDeferral();
DoTask(details);
}
然后在AppxManifest中添加这个后台任务的声明

接下来在创建后台传输任务的时候设置触发器,任务完成后就会触发刚才创建的那个后台任务
public static BackgroundDownloader CreateBackgroundDownloader()
{
BackgroundTransferCompletionGroup completionGroup = new BackgroundTransferCompletionGroup(); BackgroundTaskBuilder builder = new BackgroundTaskBuilder();
builder.TaskEntryPoint = typeof(ChinaMooc.BackgroundTasks.DownloadTask).FullName;
builder.SetTrigger(completionGroup.Trigger); BackgroundTaskRegistration taskRegistration = builder.Register(); BackgroundDownloader downloader = new BackgroundDownloader(completionGroup); return downloader;
}
接下来的关键是判断应用是否被挂起
有一个简答粗暴的方法,因为后台任务的运行时间至少有30秒的时间(Windows Phone 8时代)所以我们可以主动等待1-2秒,然后检查一下数据库中对应任务是否已经被标记(因为如果应用没有挂起,文件传输完成后一样会出发后台任务),如果没有则更新数据库,并检查是否有后续任务,如果有继续创建一个新任务就OK了!这样就可以实现,就算应用被关闭了一样可以继续下载。
这是yunfan.me的备份,以后的博客都会写在yunfan.me,然后同步到博客园
中国大学MOOC中的后台文件传输的更多相关文章
- 【python】下载中国大学MOOC的视频
[python]下载中国大学MOOC的视频 脚本目标: 输入课程id和cookie下载整个课程的视频文件,方便复习时候看 网站的反爬机制分析: 分析数据包的目的:找到获取m3u8文件的路径 1. 从第 ...
- 与众不同 windows phone (13) - Background Task(后台任务)之后台文件传输(上传和下载)
原文:与众不同 windows phone (13) - Background Task(后台任务)之后台文件传输(上传和下载) [索引页][源码下载] 与众不同 windows phone (13) ...
- 中国大学MOOC课程信息之数据分析可视化二
版权声明:本文为博主原创文章,转载 请注明出处:https://blog.csdn.net/sc2079/article/details/82318571 - 写在前面 本篇博客继续对中国大学MOOC ...
- 中国大学MOOC课程信息之数据分析可视化一
版权声明:本文为博主原创文章,转载 请注明出处:https://blog.csdn.net/sc2079/article/details/82263391 9月2日更:中国大学MOOC课程信息之数据分 ...
- 中国大学MOOC课程信息爬取与数据存储
版权声明:本文为博主原创文章,转载 请注明出处: https://blog.csdn.net/sc2079/article/details/82016583 10月18日更:MOOC课程信息D3.js ...
- 中国大学MOOC 邮箱验证的问题
在使用 中国大学 MOOC 过程中,在PC端修改个人资料时,其中有项“常用邮箱”,于是写了QQ邮箱,结果发现一直无法验证,连邮件都无法收到. 经过多番尝试,重新使用邮箱注册的方式注册账号,然后注册成功 ...
- 中国大学mooc直播回放看这里哦http://www.icourse163.org/forum/1001974001/topic-1003372881.htm?sortType=1&pageIndex=1
中国大学mooc直播回放看这里哦http://www.icourse163.org/forum/1001974001/topic-1003372881.htm?sortType=1&pageI ...
- 计算机网络 中国大学MOOC 哈尔滨工业大学 习题答案
转自 https://blog.csdn.net/qq_37514135/article/details/82733651 计算机网络作业题 第一章 第一题 如图所示网络.A在t=0时刻开始向C发送一 ...
- 如何用firefox57看中国大学mooc视频
最新的firefox57看mooc视频不成功,查了很多帖子,不知所云. 其实只要几步: 1.安装User Agent Switcher(看一下其条目,如果没有的话就添加 [Mozilla/5.0 (W ...
随机推荐
- 物理机(真实机)能ping通虚拟机,但是虚拟机无法ping通真实机(可能是防火墙问题)
物理机IP地址:192.168.1.209 虚拟机IP地址:192.168.1.5.192.168.1.7.192.168.1.10 物理机设置:
- LPC2478中断控制器以及串口详解
LPC2478的中断系统 LPC2478使用的是ARM PrimeCell向量中断控制器,一共支持32个中断向量,处于AHB空间便于系统快速访问,在中断向量的硬件优先级上还有一层可以用户自己设计的软件 ...
- VR元年,VR虚拟现实这只风口上的猪有怎样的变化?
走过了2016年,无论我们承认不承认,这一年到底是不是VR元年,我们都很难否定,在这一年,VR虚拟现实生态圈有很大的变化,那么,这一年VR虚拟现实到底有怎样的改变呢?我们的VR虚拟现实生态圈,发生了什 ...
- 【转】Linux Shell脚本面试25问
Q:1 Shell脚本是什么.它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令.作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件( ...
- sqlserver 笔记:常用字符串函数
select tid,tid+ coalesce(tid0,'101') from article where id=1 ---如果tid为null 则 返回101 select LEN('你 ...
- 一个异步任务接收两个url下载两个图片
有两个url,一个是下载用户头像的url,一个是下载用户上传图片的url,想要用一个异步任务同时下载这两个图片. 程序的下载任务是这么执行的,先接受url参数,然后调用 imgUrls = infoP ...
- My97DatePicker显示时间控件的使用方法
1.下载My97DatePicker到项目的WebContent文件夹,下载地址http://www.my97.net/dp/down.asp,项目文件夹目录如图所示 2.页面调用 在这里我的路径出现 ...
- vs2015编译mysql c++ connector
目前MySQL Connector/C++的binary版本最高只支持VS2008,VS2015需要下载源码自行编译. 1.CMAKE 到官网下载最新的稳定版本 把bin目录添加到环境变量PATH中 ...
- http://www.cnblogs.com/gaojing/archive/2011/08/23/2413616.html
http://www.cnblogs.com/gaojing/archive/2011/08/23/2413616.html
- MyBatis中的大于、小于、like等符号写法
其实就是xml的特殊符号,因为它的配置就是xml,所以可以用下面这种写法转义 < < > > <> <> & & ' ...