Android HttpURLConnection MultiThreadDownloader

[下载链接](https://github.com/moz1q1/MultiThreadDownloader)

Android Multi-Thread Downloader

使用说明

/**
     * 开始一个下载任务
     * Start a download task.
     *
     * @param url      文件下载地址
     *                 Download url.
     * @param dir      文件下载后保存的目录地址,该值为空时会默认使用应用的文件缓存目录作为保存目录地址
     *                 The directory of download file. This parameter can be null, in this case we
     *                 will use cache dir of app for download path.
     * @param name     文件名,文件名需要包括文件扩展名,类似“moziqi.apk”的格式。该值可为空,为空时将由程
     *                 序决定文件名。
     *                 Name of download file, include extension like "AigeStudio.apk". This
     *                 parameter can be null, in this case the file name will be decided by program.
     * @param headers  请求头参数
     *                 Request header of http.
     * @param listener 下载监听器
     *                 Listener of download task.
     */
    public void dlStart(String url, String dir, String name, List<DLHeader> headers, IDListener listener)

注意

  • 本库不会校验文件是否正确,只会比较大小是否一致
  • 下载的时候,会比较拉取服务器的contentLength跟本地文件是否一致,不一致就会重新下载
  • 需要依赖第三方开发者,在下载前和下载后,对文件做MD5或者crc32校验
  • 目前我没有对多线程下载同一个文件深入研究代码逻辑,最好还是选择单线程下载单个文件
  • 对stop的逻辑没做任何的调整,存在的bug,自己解决

新增逻辑 2018-8-10

  • 修复一些已知存在的bug
  • 增加https的支持
  • 修改数据库的操作,改为单例的数据库实例
  • 增加控制单线程下载文件还是多线程下载文件
  • 当前的链接请求失败自动下载下一个链接,并且在有网络的情况执行
  • 增加适配v21以上的网络判断逻辑
  • 增加网络变化,可以把等待队列加入到下载队列里面,提高下载率,但是需要手动添加
//代码已经封装好了,在合适的地方注册和销毁就好
//<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
//<uses-permission android:name="android.permission.INTERNET"/>
NetWorkStateReceiver.registerReceiver();
NetWorkStateReceiver.unregisterReceiver();

待处理问题

  • 重启应用的时候,是否遍历上次失败或者挂了的本地数据,继续下载

转载于:https://my.oschina.net/moziqi/blog/1925585

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值