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