Make RequirementsWatcher notify listener on not met requirements change

PiperOrigin-RevId: 225557638
This commit is contained in:
eguven 2018-12-14 17:52:16 +00:00 committed by Oliver Woodman
parent 28dca0b339
commit 9198e4cf7a

View File

@ -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 {