Implement a command handler for constraints changed.
This change makes SystemAlarmManager constraints aware.
- When scheduling workspecs without constraints, alarms are set or
delay_met commands are issued (depending on next run time).
- For workspecs with constraints, we update constraint proxies and let
them wake us up for changes in constraints & issue delay_mets.
- During delay_met if the constraints are unmet, then the command
is cancelled and rescheduled.
Test: Added unit tests
Change-Id: I7533dd7d831d8df3f7c0c9349d52332c9691b3b9
diff --git a/background/workmanager/src/main/java/android/arch/background/workmanager/impl/model/WorkSpec.java b/background/workmanager/src/main/java/android/arch/background/workmanager/impl/model/WorkSpec.java
index 07ef97a..fc708ae 100644
--- a/background/workmanager/src/main/java/android/arch/background/workmanager/impl/model/WorkSpec.java
+++ b/background/workmanager/src/main/java/android/arch/background/workmanager/impl/model/WorkSpec.java
@@ -303,6 +303,13 @@
}
}
+ /**
+ * @return <code>true</code> if the {@link WorkSpec} has constraints.
+ */
+ public boolean hasConstraints() {
+ return !Constraints.NONE.equals(getConstraints());
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) {