android实现多任务多线程支持断点下载的下载软件

运行效果图:

android实现多任务多线程支持断点下载的下载软件

多任务多线程下载并不麻烦,只要思路清晰,逻辑清晰正确,是很好实现的。我最后遇到的纠结问题是数据库的操作上,我是拿数据库来存储下载信息的,所以在数据库的关闭上遇到了麻烦。上面那个版本是建立在前面N个demo的基础之上的,在这里我写下来的唯一目的就是能够以一个清晰的思路写清楚,同时让大家看明白。


一、首先是数据库,

数据库五个字段:

任务的ID:_id

线程ID:thread_id

线程下载的起始位置:start_pos

这个线程下载的结束位置:end_pos

这个任务已经下载的大小:compelete_size

这个任务的下载地址:urlString


二、操作数据库的类。在实现断点续传下载的时候,我是把线程每次下载结束后的当前任务信息都保存到数据库里面一次,相当于每次一个线程下载一次,就给当前任务拍个照片,把当前信息存到数据库里面。这样一旦暂停,或者退出程序,下次再下载的时候,直接从数据库里面读数据,然后在这个数据的基础上继续下载就行。


数据库助手类DBhelper:



二、数据库中的方法,很多是建立在别的类的基础上,当别的类需要操作数据库的时候,在数据中添加相对应的方法即可。

下面是两个实体类: DownloadInfo是每一个下载任务的信息; ThreadDownloadInfo是一个下载任务对应的下载线程的信息类。


线程信息类:


三、MainActivity



四、下载器类,为MainActivity提供服务(方法)



PS:这个写的很简单,实现了最基本的功能。后续可以加上服务,实现后台下载。

这段时间情绪低落,代码写的少了,仅仅完成了几个惨不忍睹的半成品。感觉完全没有得到提高。

Luffy ,you should do sth to change it.

你可能感兴趣的:(android)