12
A
回答
22
哎呀答案很明顯。對不起愚蠢的問題。只需要像往常一樣閱讀InputStream。在while循環每次
private class AsyncDownloader extends AsyncTask<Void, Long, Boolean> {
private final String URL = "file_url";
@Override
protected Boolean doInBackground(Void... params) {
OkHttpClient httpClient = new OkHttpClient();
Call call = httpClient.newCall(new Request.Builder().url(URL).get().build());
try {
Response response = call.execute();
if (response.code() == 200) {
InputStream inputStream = null;
try {
inputStream = response.body().byteStream();
byte[] buff = new byte[1024 * 4];
long downloaded = 0;
long target = response.body().contentLength();
publishProgress(0L, target);
while (true) {
int readed = inputStream.read(buff);
if(readed == -1){
break;
}
//write buff
downloaded += readed;
publishProgress(downloaded, target);
if (isCancelled()) {
return false;
}
}
return downloaded == target;
} catch (IOException ignore) {
return false;
} finally {
if (inputStream != null) {
inputStream.close();
}
}
} else {
return false;
}
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
@Override
protected void onProgressUpdate(Long... values) {
progressBar.setMax(values[1].intValue());
progressBar.setProgress(values[0].intValue());
textViewProgress.setText(String.format("%d/%d", values[0], values[1]));
}
@Override
protected void onPostExecute(Boolean result) {
textViewStatus.setText(result ? "Downloaded" : "Failed");
}
}
0
,你發佈的progress.So它就像被封鎖
0
可以使用okHttp receipe:Progress.java
相關問題
- 1. 下載進度
- 2. NSURLConnection下載進度
- 3. Android下載進度
- 4. 下載進度條
- 5. 下載時的進度條
- 6. 下載Android中的進度
- 7. 下載MediaElement的進度WPF
- 8. Android的下載進度
- 9. Square-Connect TransactionId長度
- 10. AFNetworking + JSON +進度下載
- 11. Apache Camel下載進度
- 12. 進度條下載圖像
- 13. Firebase下載進度條
- 14. 進度下載對話框
- 15. AJAX頁面下載進度
- 16. 在HTML5中下載進度
- 17. 顯示下載進度
- 18. 獲取iOS下載進度
- 19. AFNetworking setImageWithURLRequest下載進度
- 20. Java FTP下載進度
- 21. Gu 6 6下載進度
- 22. 顯示下載進度條
- 23. 監視BufferedInputStream下載進度
- 24. 旋轉進度條下載
- 25. FilePathResult下載進度MVC
- 26. OkHttp - 檢測圖像下載超時
- 27. 使用OKHTTP下載pdf文件
- 28. 如何顯示下載進度 - 或者是否應該顯示下載進度
- 29. 瞭解更新UIprogressView的下載進度
- 30. 如何計算ProgressBar的下載進度
是不是有一個更優雅的方式來做到這一點?像okHttpClient.newCall(請求).notifyProgress(回調)...或類似的東西... – josketres 2015-01-08 16:26:47
很好的答案,但還有一個問題...我看到我們有一個輸入流...要將它傳遞給一個文件,我們必須再次遍歷整個流並將其轉換爲文件?你能否展示如何獲得已下載的File對象? – 2015-04-01 18:48:23
@MarcusGabilheri你在說這個嗎? http://stackoverflow.com/a/10857407/1979290 – 2015-04-02 11:01:07