From 9198e4cf7a27dbf0dbb81e07b7ea2824cf3c3812 Mon Sep 17 00:00:00 2001 From: eguven Date: Fri, 14 Dec 2018 17:52:16 +0000 Subject: [PATCH] Make RequirementsWatcher notify listener on not met requirements change PiperOrigin-RevId: 225557638 --- .../scheduler/RequirementsWatcher.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/scheduler/RequirementsWatcher.java b/library/core/src/main/java/com/google/android/exoplayer2/scheduler/RequirementsWatcher.java index d1eb28cc2a..021c10439a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/scheduler/RequirementsWatcher.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/scheduler/RequirementsWatcher.java @@ -44,14 +44,15 @@ public final class RequirementsWatcher { public interface Listener { /** - * Called when the requirements are met. + * Called when all of the requirements are met. * * @param requirementsWatcher Calling instance. */ void requirementsMet(RequirementsWatcher requirementsWatcher); /** - * Called when the requirements are not met. + * Called when there is at least one not met requirement and there is a change on which of the + * requirements are not met. * * @param requirementsWatcher Calling instance. */ @@ -65,7 +66,7 @@ public final class RequirementsWatcher { private final Requirements requirements; private DeviceStatusChangeReceiver receiver; - private boolean requirementsWereMet; + private int notMetRequirements; private CapabilityValidatedCallback networkCallback; /** @@ -87,7 +88,7 @@ public final class RequirementsWatcher { public void start() { Assertions.checkNotNull(Looper.myLooper()); - requirementsWereMet = requirements.checkRequirements(context); + notMetRequirements = requirements.getNotMetRequirements(context); IntentFilter filter = new IntentFilter(); if (requirements.getRequiredNetworkType() != Requirements.NETWORK_TYPE_NONE) { @@ -159,13 +160,13 @@ public final class RequirementsWatcher { } private void checkRequirements() { - boolean requirementsAreMet = requirements.checkRequirements(context); - if (requirementsAreMet == requirementsWereMet) { - logd("requirementsAreMet is still " + requirementsAreMet); + int notMetRequirements = requirements.getNotMetRequirements(context); + if (this.notMetRequirements == notMetRequirements) { + logd("notMetRequirements hasn't changed: " + notMetRequirements); return; } - requirementsWereMet = requirementsAreMet; - if (requirementsAreMet) { + this.notMetRequirements = notMetRequirements; + if (notMetRequirements == 0) { logd("start job"); listener.requirementsMet(this); } else {