From 04298f8886b2e857132a3bc9fed4cba9c755ee23 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 26 Mar 2019 17:23:25 +0100 Subject: [PATCH] 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 --- app/src/main/java/org/fdroid/fdroid/net/Downloader.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/fdroid/fdroid/net/Downloader.java b/app/src/main/java/org/fdroid/fdroid/net/Downloader.java index 9fe3ca529..f37a6dcd6 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/Downloader.java +++ b/app/src/main/java/org/fdroid/fdroid/net/Downloader.java @@ -204,10 +204,16 @@ public abstract class Downloader { * Send progress updates on a timer to avoid flooding receivers with pointless events. */ private final TimerTask progressTask = new TimerTask() { + private long lastBytesRead = Long.MIN_VALUE; + private long lastTotalBytes = Long.MIN_VALUE; + @Override public void run() { - if (downloaderProgressListener != null) { + if (downloaderProgressListener != null + && (bytesRead != lastBytesRead || totalBytes != lastTotalBytes)) { downloaderProgressListener.onProgress(bytesRead, totalBytes); + lastBytesRead = bytesRead; + lastTotalBytes = totalBytes; } } };