4
Android用のダウンロードファイルとしてokhttpライブラリを使用しています。私は正常にダウンロードされます。しかし、一時停止してダウンロードを再開すると、何かが間違っています。Androidでokhttpでダウンロードを一時停止/再開する方法
Response request = new Request.Builder().url(url).build();
ResponseBody responseBody = response.body();
File file = new File(filePath);
BufferedInputStream input = new BufferedInputStream(responseBody.byteStream());
OutputStream output;
if (isResume) {
output = new FileOutputStream(file, true);
input.skip(downloadedSize);
} else {
output = new FileOutputStream(file, false);
}
long totalByteSize = responseBody.contentLength();
byte[] data = new byte[1024];
int count = 0;
while ((count = input.read(data)) != -1) {
downloadedSize += count;
output.write(data, 0, count);
}
たとえば、ファイルのサイズが10MBであるという問題があります。 3MBをダウンロードしてから一時停止してからダウンロードを再開し、ダウンロードが完了するとファイルサイズは13MBになります。それは、ダウンロードしたサイズからレジュームで始まりません、それはbytestreamの初めからダウンロードを開始します。ファイルは13MBになります。コードで何が問題になっていますか?
新しいリクエストを作成して送信しています。これにより、応答はファイル全体を保持します。 okHttpに部分的なレスポンスをダウンロードする機能があるのかどうかはわかりませんが、それがどうやって行うのかは分かりません。少なくともダウンロードを開始する場所に関するデータを渡す必要があります。 –