From f7a0f29738bc064ba7d960f9a832305c4670d988 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 17 Jul 2020 08:03:09 +0200 Subject: [PATCH] Prevent double reload --- .../java/eu/faircode/email/ServiceSynchronize.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 95bd6445f8..4ecc63e05a 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -1718,6 +1718,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences } private ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() { + private Network reloaded = null; private NetworkCapabilities lastActiveCaps = null; private LinkProperties lastActiveProps = null; @@ -1744,7 +1745,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); Network active = cm.getActiveNetwork(); if (active != null && active.equals(network)) { - boolean reload = (lastActiveCaps != null && + boolean reload = (!active.equals(reloaded) && lastActiveCaps != null && caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN) && caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED) && lastActiveCaps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN) && @@ -1754,8 +1755,10 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences EntityLog.log(ServiceSynchronize.this, "Connectivity changed " + network + " caps=" + caps + " reload=" + reload); - if (reload) + if (reload) { + reloaded = active; reload(ServiceSynchronize.this, -1L, false, "unmetered"); + } lastActiveCaps = caps; } @@ -1804,14 +1807,17 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences } } - boolean reload = ((ahas4 && !lhas4) || (ahas6 && !lhas6)); + boolean reload = (!active.equals(reloaded) && + (ahas4 && !lhas4) || (ahas6 && !lhas6)); if (reload || BuildConfig.DEBUG) EntityLog.log(ServiceSynchronize.this, "Connectivity changed " + network + " props=" + props + " reload=" + reload); - if (reload) + if (reload) { + reloaded = active; reload(ServiceSynchronize.this, -1L, false, "connectivity"); + } lastActiveProps = props; }