原创android 多任务断点续传下载.doc_第1页
原创android 多任务断点续传下载.doc_第2页
原创android 多任务断点续传下载.doc_第3页
原创android 多任务断点续传下载.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

多任务下载1. 网上看了很多下载,都是单任务多线程,都没有人写多任务下载功能。找了2天还是没找到,所以自己研究,写了一个多任务断点下载 暂停 实时更新 等功能的 下载器,因为公司代码 所以不能提供源码 望见谅,本人安卓新人 接触不到2个月 代码写的不好,只是为需要的人提供一点思路废话不说,开篇吧,第一。多任务下载思路,当我要实现这个功能,看过网上,加入服务再让服务去启线程,服务不一定需要 具体看你的客户端 比如下图列表,当用点击某一项 这个时候添加到下载中,实现后太下载,(需判断是否存在SD卡 这个我就不唠叨了)这里 离不开数据库了, 因为当前的Activity 有自己的handler 或者list , 当需要一个manger 管理的时候,需要查找下载的信息,进度 。等等,重点说线程,1 .线程类里,当初次加入线程时 先判断是否要加入数据库,2. 判断是否可重复下载,这里是指SD卡删掉 数据库 还有信息,3. 开始下载,RandomAccessFile 类出现,文件的大小 范围 seek从哪里开始,(跟多线 那里一样,如果不会使用 RandomAccessFile 可以去看看教学视频)4. 然后 while()读数据了 并向handler 发数据了,(handler发数据?这里说明需要一个handler对象了,构造的时候记得赋值)以上类都可以说是下载列表的一个下载操作,相信做过下载的都可以直接完成了,比较复杂的就是后面Manger管理类毫无关系 接下来怎么产生联系呢?a.第一,Manger的展示列表,此列表数据来至数据库,你也别想着内存取,取是可以取 但是关了程序后 你的list就为空了,还不如去数据库差,可以减少判断。B.既然是来至数据库,这个肯定要先写Dao方法查询了 一个List 集合,填充到页面,当做完这里 你可以能有数据了 但是问题是 它的下载进度是更新不了,先说怎么实现这个更新, 全局的 handler 对象应该浮现出来,这个时候 线程类的handler对象是下载列表的 并不是当前manger的,所以这个时候 在manger类里面需要给线程类handler赋值 MyThread,mhandler = handler; 这样话就可以拿到下载线程发出的Message咯。也就是发送的字节下载数,然后在manger的handler类更新UI这个时候 下载进度就是可以动的了这个时候已经是多任务下载了,并且可以更新下载进度了,C.暂停的控制,也许你会想到全局bool 。我之前也是这么想的但是后来发现 一个暂停全部就暂停了,所以不能全局变量 所以需要针对每个线程,每个线程怎么控制呢 这个时候需要一个map了,在开下载的时候 把线程对象存到map里,那么再我们单击点一项时,则就可以通过url 找到对应的 线程对象了,在改变其状态 就可以暂停了 ,D.再下载功能,当暂停时。判断是否第一次进入,因为用户直接到Manger界面。那么 就没有线程对象 那么要到数据库把任务最后的字节给读出来,如果存在线程对象,那么就去读到线程对象,就可以读到开始点了,这个开始点要判断好 否则就不可以续下载了,代码 截图片段 map 里的线程 这是 下载发数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论