diff options
author | Christian Schneppe <christian@pix-art.de> | 2017-01-15 11:46:20 +0100 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2017-01-15 11:46:20 +0100 |
commit | 5c20a67e6687cd700e2c19291d1829254c043e07 (patch) | |
tree | 9ea5abe5916b96882fab637a1b23eab24929ed00 /src/main/java/de/pixart/messenger/services/AbstractConnectionManager.java | |
parent | 0ff3c0b3b446fef371d8d768f78e65fc993b3386 (diff) |
only call UI thread from downloading thread every 250ms
Diffstat (limited to '')
-rw-r--r-- | src/main/java/de/pixart/messenger/services/AbstractConnectionManager.java | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/main/java/de/pixart/messenger/services/AbstractConnectionManager.java b/src/main/java/de/pixart/messenger/services/AbstractConnectionManager.java index fe101edc6..5a65d23c3 100644 --- a/src/main/java/de/pixart/messenger/services/AbstractConnectionManager.java +++ b/src/main/java/de/pixart/messenger/services/AbstractConnectionManager.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.pm.PackageManager; import android.os.Build; import android.os.PowerManager; +import android.os.SystemClock; import android.util.Log; import android.util.Pair; @@ -22,6 +23,7 @@ import java.io.OutputStream; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; +import java.util.concurrent.atomic.AtomicLong; import javax.crypto.Cipher; import javax.crypto.CipherInputStream; @@ -35,6 +37,8 @@ import de.pixart.messenger.entities.DownloadableFile; public class AbstractConnectionManager { protected XmppConnectionService mXmppConnectionService; + private static final int UI_REFRESH_THRESHOLD = 250; + private static final AtomicLong LAST_UI_UPDATE_CALL = new AtomicLong(0); public AbstractConnectionManager(XmppConnectionService service) { this.mXmppConnectionService = service; @@ -145,6 +149,15 @@ public class AbstractConnectionManager { } } + public void updateConversationUi(boolean force) { + synchronized (LAST_UI_UPDATE_CALL) { + if (force || SystemClock.elapsedRealtime() - LAST_UI_UPDATE_CALL.get() >= UI_REFRESH_THRESHOLD) { + LAST_UI_UPDATE_CALL.set(SystemClock.elapsedRealtime()); + mXmppConnectionService.updateConversationUi(); + } + } + } + public PowerManager.WakeLock createWakeLock(String name) { PowerManager powerManager = (PowerManager) mXmppConnectionService.getSystemService(Context.POWER_SERVICE); return powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, name); |