项目中一直用到okHttp3作为网络层,一直想着做一下记录,也一直没写,现在在这里做一下记录。
方法可以直接使用,并且返回下载的进度,当下载中断会生成缓存文件,再次下载相同文件会重新从上次断点处继续下载。
package com.savor.ads.okhttp.coreProgress.download;
import android.text.TextUtils;
import android.util.Log;
import com.savor.ads.service.MiniProgramNettyService;
import com.savor.ads.utils.ConstantValues;
import com.savor.ads.utils.LogFileUtil;
import com.savor.ads.utils.LogUtils;
import org.json.JSONObject;
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.math.BigDecimal;
import java.nio.ByteBuffer;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
/**
* Created by Administrator on 2016/12/9.
* Modify by bichao on 2019-06-25 13:41
*/
public class ProgressDownloader {
public static final String TAG = "ProgressDownloader";
public final static int CONNECT_TIMEOUT =60;
public final static int READ_TIMEOUT=10;
public final static int WRITE_TIMEOUT=10;
private String url;
private OkHttpClient client;
//下载文件存储的位置
private String filePath;
private String fileName;
private long fileSize;
//下载失败重复下载次数,最多3次
private int downloadCount=0;
private Call call;
private MiniProgramNettyService.DownloadProgressListener downloadProgressListener;
public void setDownloadProgressListener(MiniProgramNettyService.DownloadProgressListener listener){
downloadProgressListener = listener;
}
public Progres

本文介绍了一个基于OkHttp3的断点续传下载实现方案,该方案能够记录下载进度,支持从断点处继续下载,同时具备下载失败重试机制,确保文件下载的完整性和可靠性。
最低0.47元/天 解锁文章
811

被折叠的 条评论
为什么被折叠?



