Skip to content

mosentest/MultiThreadDownloader

 
 

Repository files navigation

Android Arsenal


Android Multi-Thread Downloader

  • 由于原作者不做维护了,我在基于上修改部分代码
  • 喜欢用HttpURLConnection可以考虑看看这个

使用说明

   /**
     * 开始一个下载任务
     * 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)
    /**
     * 设置是否开启Debug模式 默认不开启
     * Is debug mode, default is true.
     *
     * @param isDebug ...
     * @return ...
     */
    public DLManager setDebugEnable(boolean isDebug) {
        DLCons.DEBUG = isDebug;
        return sManager;
    }
    /**
     * 是否支持多线程下载同一个包,默认false
     *
     * @param supportMultiThread
     */
    public void setSupportMultiThread(boolean supportMultiThread) {
        isSupportMultiThread = supportMultiThread;
    }
    /**
     * 设置并发下载任务最大值
     * The max task of DLManager.,默认2个
     *
     * @param maxTask ...
     * @return ...
     */
    public DLManager setMaxTask(int maxTask) {
        this.maxTask = maxTask;
        return sManager;
    }

注意

  • 本库不会校验文件是否正确,只会比较大小是否一致
  • 下载的时候,会比较拉取服务器的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();

待处理问题

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

About

Multi-Thread Downloader for Android HttpURLConnection

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%