diff --git a/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java b/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java index fdc521be65f92b65bd72cd96e207b24667d39654..2001b559cb5782017967dedb4ef871dd5a24968e 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java @@ -114,8 +114,7 @@ class AndroidNetworkManager implements NetworkManager, Service { String action = i.getAction(); if (LOG.isLoggable(INFO)) LOG.info("Received broadcast " + action); updateConnectionStatus(); - // TODO: Also schedule update after idle mode changes - if (isSleepEvent(i)) { + if (isSleepOrDozeEvent(i)) { scheduleConnectionStatusUpdate(1, MINUTES); } else if (isApEnabledEvent(i)) { // The state change may be broadcast before the AP address is @@ -125,9 +124,13 @@ class AndroidNetworkManager implements NetworkManager, Service { } } - private boolean isSleepEvent(Intent i) { - return ACTION_SCREEN_ON.equals(i.getAction()) || - ACTION_SCREEN_OFF.equals(i.getAction()); + private boolean isSleepOrDozeEvent(Intent i) { + String action = i.getAction(); + boolean isSleep = ACTION_SCREEN_ON.equals(action) || + ACTION_SCREEN_OFF.equals(action); + boolean isDoze = SDK_INT >= 23 && + ACTION_DEVICE_IDLE_MODE_CHANGED.equals(action); + return isSleep || isDoze; } private boolean isApEnabledEvent(Intent i) {