多线程下载

1. 简介

基于 RxJava 打造的多线程下载工具, 支持断点续传, 下载管理等

1.1. 特性

  1. 断点续传
  2. 多线程下载
  3. 后台下载

2. 基础环境

  • AndroidStudio 3.4.+
  • java1.8
  • gradle 5.1.1

3. 如何使用

3.1. Release版本

  • 项目依赖
allprojects {
  repositories {
        maven {
               // 配置用户名和密码
               credentials {
                   username 'anonymous'
                   password ''
               }
               // 配置仓库地址
               url 'http://172.16.28.234:8083/repository/maven-releases/'
           }
  }
}
  • 添加依赖
    implementation 'com.jpxx.android.library:rx-download:latest.integration'

3.2. 快照版本

  • 项目依赖
allprojects {
  repositories {
        maven {
               // 配置用户名和密码
               credentials {
                   username 'anonymous'
                   password ''
               }
               // 配置仓库地址
               url 'http://172.16.28.234:8083/repository/maven-snapshots/'
           }
  }
}
  • 添加依赖
    implementation 'com.jpxx.android.library:rx-download:1.0.0-SNAPSHOT'

4. 使用说明

4.1. 获取RxDownload实例

RxDownload rxDownload = RxDownload.getInstance(context)
                    .retrofit()  // 设置自定义retrofit
                    .maxThread(3) //下载最大线程数
                    .maxRetryCount(2)//重试次数
                    .maxDownloadNumber(2);//同时下载数

4.2. 普通下载

        rxDownload.download(downloadLink,
                saveName,
                savePath)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<DownloadStatus>() {
                    @Override
                    public void accept(DownloadStatus downloadStatus) throws Exception {
                        KLog.d("total size : " + downloadStatus.getFormatTotalSize());
                    }
                });

4.3. 后台服务下载

Disposable downloadDisposable = rxDownload.serviceDownload(downloadLink,
                           saveName,
                           savePath).subscribe();

这里可以使用AutoDispose实现自动解绑,避免内存泄漏

4.4. 接收下载状态回调

rxDownload.receiveDownloadStatus(downloadLink)
                .sample(2L, TimeUnit.SECONDS, true)
                .subscribe(downloadEvent -> {
                    // flag详细含义请看com.jpxx.lib.download.entity.DownloadFlag
                    int flag = downloadEvent.getFlag();
                }, error -> {
                    KLog.e(TAG_DOWNLOAD, error);
                });

4.5. 获取历史下载结果

rxDownload.getDownloadRecord(downloadLink)
                                .subscribe(downloadRecord -> {
                                    KLog.d(TAG_DOWNLOAD, ":" + downloadRecord.getSaveName() + "; savePath : " + downloadRecord.getSavePath());
                                });

5. 混淆

无特殊混淆, 只需添加Retrofit及OKHTTP的混淆即可

-dontnote retrofit2.Platform
-dontwarn retrofit2.Platform$Java8
-keepattributes Signature
-keepattributes Exceptions

-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn javax.annotation.**

源码地址:http://172.16.28.234:8081/dev-plat/android/lib/rx-download

源码地址:http://sources.jpsycn.com/dev-plat/android/lib/rx-download.git

Copyright © jpsycn.com 2018 all right reserved,powered by Gitbook该文件修订时间: 2019-09-10 14:26:32

results matching ""

    No results matching ""