资源介绍
多任务下载框架,是一个封装了下载功能的工具,它支持下载队列,对外提供下载进度更新,暂停||恢复||取消下载等功能。该框架适用于一切需要多任务下载的地方。例如app市场的app下载,视频app的视频下载,网易云阅读的离线下载等等。
如何将不同的下载场景抽取出一个普适的工具,这是Stay要着重花时间来讲的,毕竟每个App的下载需求都不一样,如何解耦,如何扩展,这些都是使用开源 框架无法体会的。通过从0到1的架构过程,希望能让大家学会举一反三,以后再也不用去发愁有了bug不会改,有了新需求不会扩展。
我们会在多任务下载中会碰到很多坑,我们先来预热下。
比如说:
1. 下载的进度与状态如何notify给所有的activity,单一的callback已经不能满足这样的需求了
2. 由于使用多个线程去下载同一个文件,涉及到的进度更新等这些并发操作如何处理,并不是简单的加上synchronized就搞定了的
3. 当应用被强杀后,我们的下载数据应该如何处理,是否能再恢复断点下载?
4. 下载之前的预处理:是否支持断点续传,文件长度是否能获取,它们都对应着不同的下载策略
这些坑,只有掉进去过才知道如何爬出来,如果只想着去用开源框架,再掉坑里那就麻烦了,一是可能不会改,二是本身框架的限制,改了会破坏耦合。
相信我,没有任何一个开源框架能满足你所有的需求,总是要改的,Stay的也不例外,但我们讲的是框架是如何从无到有写出来的,而不是拿一个完整的框架来分析。一旦你知道如何写,你就明白耦合是怎么一回事,在哪些节点可以再加哪些扩展与优化。
框架永远都不可能变得完美,它是基于当前项目环境下的最优产物,所以Stay不可能教会你所有的功能知识点,但是会把这种解决问题的能力传递给你,不思考不实践是学不会的,但只要你掌握了这种能力,不管是本框架还是其他任何需求,你都能轻松应对。
另外,在课程中也穿插了真实的开发流程:需求分析-产品设计-架构-测试-实现,Stay希望通过本课程能培养大家正确的开发方式,让自己更高效。
既然是框架课程,已经脱离了单纯的API调用,其高度抽象与伸缩性不是那么容易就能理解,希望同学们能耐心的学习,花时间去实践,磨刀不误砍柴工,只要有所领悟,它给你带来的不仅仅高效开发这么简单。