断点续传

来源:互联网 发布:四川话发音软件 编辑:程序博客网 时间:2024/06/03 19:27

先上效果图:
Activity:

下载1

Notification:

下载2

序列图:

Created with Raphaël 2.1.0MainActivityMainActivityDownloadServiceDownloadServiceDownloadTaskDownloadTaskNotificationNotification启动/暂停service启动/暂停下载task广播通知下载进度更新notification进度

实现思路:
1. MainActivity添加两个按钮,用来启动或者暂停DownloadService。
2. DownloadService通过onStartCommand接收判断启动或者暂停下载任务。
3. 如果是启动下载任务,则初始InitThread线程来连接网络获取文件信息(比如文件长度)并创建本地文件。(此处只是准备工作)
4. 第3步完成后,启动DownloadTask的下载任务。
5. DownloadTask从本地数据库获取文件信息,比如上次下载保存的进度。在DownloadTask中启动DownloadThread线程下载文件,此处的关键方法是:seek(long offset),通过此方法,可以设置写入的位置,从而实现断点续传。(此处是真正下载的线程)
6. DownloadThread线程下载过程中,发送广播给MainActivity更新进度。MainActivity通过NotificationManager更新notification进度条。
7. 如果是暂停下载任务,则在DownloadService中设置DownloadTask的isPause布尔值为true,保存文件下载信息,然后终止下载任务。

0 0