From 1a0be11ae30fe6dddcad4308d2be8c350db14e1e Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Wed, 19 Feb 2020 21:49:27 +0800 Subject: [PATCH] fix: incorrect download speed --- .../jackhuang/hmcl/task/FileDownloadTask.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/FileDownloadTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/FileDownloadTask.java index 76fcba7ac..cf0236f6e 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/FileDownloadTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/FileDownloadTask.java @@ -21,6 +21,7 @@ import org.jackhuang.hmcl.event.Event; import org.jackhuang.hmcl.event.EventBus; import org.jackhuang.hmcl.util.CacheRepository; import org.jackhuang.hmcl.util.Logging; +import org.jackhuang.hmcl.util.ToStringBuilder; import org.jackhuang.hmcl.util.io.*; import java.io.File; @@ -252,7 +253,6 @@ public class FileDownloadTask extends Task { stream = con.getInputStream(); int lastDownloaded = 0, downloaded = 0; - long lastTime = System.currentTimeMillis(); byte[] buffer = new byte[IOUtils.DEFAULT_BUFFER_SIZE]; while (true) { if (isCancelled()) { @@ -273,14 +273,13 @@ public class FileDownloadTask extends Task { // Update progress information per second updateProgress(downloaded, contentLength); - long now = System.currentTimeMillis(); - if (now - lastTime >= 1000) { - updateDownloadSpeed(downloaded - lastDownloaded); - lastDownloaded = downloaded; - lastTime = now; - } + + updateDownloadSpeed(downloaded - lastDownloaded); + lastDownloaded = downloaded; } + updateDownloadSpeed(downloaded - lastDownloaded); + closeFiles(); // Restore temp file to original name. @@ -341,7 +340,7 @@ public class FileDownloadTask extends Task { timer.schedule(new TimerTask() { @Override public void run() { - speedEvent.fireEvent(new SpeedEvent(speedEvent, downloadSpeed.getAndSet(0))); + speedEvent.channel(SpeedEvent.class).fireEvent(new SpeedEvent(speedEvent, downloadSpeed.getAndSet(0))); } }, 0, 1000); } @@ -366,6 +365,11 @@ public class FileDownloadTask extends Task { public int getSpeed() { return speed; } + + @Override + public String toString() { + return new ToStringBuilder(this).append("speed", speed).toString(); + } } }