OkHttps 下載進度監(jiān)聽

2020-04-29 09:35 更新

  就直接上代碼啦,諸君一看便懂:

  1. http.sync("/download/test.zip")
  2. .get()
  3. .getBody()
  4. .setStepBytes(1024) // 設(shè)置每接收 1024 個字節(jié)執(zhí)行一次進度回調(diào)(不設(shè)置默認為 8192)
  5. // .setStepRate(0.01) // 設(shè)置每接收 1% 執(zhí)行一次進度回調(diào)(不設(shè)置以 StepBytes 為準)
  6. .setOnProcess((Process process) -> { // 下載進度回調(diào)
  7. long doneBytes = process.getDoneBytes(); // 已下載字節(jié)數(shù)
  8. long totalBytes = process.getTotalBytes(); // 總共的字節(jié)數(shù)
  9. double rate = process.getRate(); // 已下載的比例
  10. boolean isDone = process.isDone(); // 是否下載完成
  11. })
  12. .toFolder("D:/download/") // 指定下載的目錄,文件名將根據(jù)下載信息自動生成
  13. // .toFile("D:/download/test.zip") // 指定下載的路徑,若文件已存在則覆蓋
  14. .setOnSuccess((File file) -> { // 下載成功回調(diào)
  15. })
  16. .start();

  值得一提的是:由于 OkHttps 并沒有把下載做的很特別,這里設(shè)置的進度回調(diào)不只對下載文件起用作,即使對響應JSON的常規(guī)請求,只要設(shè)置了進度回調(diào),它也會告訴你報文接收的進度(提前是服務器響應的報文有Content-Length頭),例如:

  1. List<User> users = http.sync("/users")
  2. .get()
  3. .getBody()
  4. .setStepBytes(2)
  5. .setOnProcess((Process process) -> {
  6. System.out.println(process.getRate());
  7. })
  8. .toList(User.class);

如果覺得 OkHttps 好用,就去點個 Star 吧,項目地址:


官方網(wǎng)站:http://okhttps.ejlchina.com/

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號