大佬们下载1.1G多的压缩包,怎么保证它下载的完整
Android12,系统App,我用同一个网络四台设备同时下载通一个包,下载完后三台设备md5校验对了,就一台md5是错的,然后我10分钟后再让这台继续下载还校验不过,在adb shell 进去用md5sum看md5也是错的。
这个是下载代码
OkHttpClient httpClient = new OkHttpClient.Builder()
.readTimeout(60, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.build();
Request request = new Request.Builder()
.addHeader("RANGE", "bytes=" + start + "-" + end)
.url(mUrl).build();
Call mcall = httpClient.newCall(request);
InputStream is = null;
BufferedInputStream bufferedInputStream = null;
try {
Response response = mcall.execute();
if (mDownloadStageChangeListener != null) {
mDownloadStageChangeListener.onDownloadStageChange(FOTA_DOWNLOADING);
}
byte[] buf = new byte[4096];
int len;
is = response.body().byteStream();
bufferedInputStream = new BufferedInputStream(is);
long sum = start;
while ((len = bufferedInputStream.read(buf)) != -1) {
mFotaManager.saveFotaFile(buf, len, newFotaVersionFilePath);
sum += len;
float progress = (sum * 1.0f / end * 100);
String formatProgress = String.format(Locale.ENGLISH, "%.2f", progress);
if (!mLastProgress.equals(formatProgress)) {
LogUtils.i(TAG, "FOTA package download progress: " + mVersion + ", " + formatProgress + "%");
mLastProgress = formatProgress;
}
}
mFotaManager.saveFotaFile(null, -1, newFotaVersionFilePath);
这么大的数据没经验'[捂脸]