DownloaderService: only broadcast progress when it actually changes

On a slow download, this could send like 100+ updates even though no more
data had been received.

closes #1742
This commit is contained in:
Hans-Christoph Steiner 2019-03-26 17:23:25 +01:00
parent d794c5a77c
commit 04298f8886

View File

@ -204,10 +204,16 @@ public abstract class Downloader {
* Send progress updates on a timer to avoid flooding receivers with pointless events. * Send progress updates on a timer to avoid flooding receivers with pointless events.
*/ */
private final TimerTask progressTask = new TimerTask() { private final TimerTask progressTask = new TimerTask() {
private long lastBytesRead = Long.MIN_VALUE;
private long lastTotalBytes = Long.MIN_VALUE;
@Override @Override
public void run() { public void run() {
if (downloaderProgressListener != null) { if (downloaderProgressListener != null
&& (bytesRead != lastBytesRead || totalBytes != lastTotalBytes)) {
downloaderProgressListener.onProgress(bytesRead, totalBytes); downloaderProgressListener.onProgress(bytesRead, totalBytes);
lastBytesRead = bytesRead;
lastTotalBytes = totalBytes;
} }
} }
}; };