diff options
| author | 2021-07-16 20:36:18 +0000 | |
|---|---|---|
| committer | 2021-07-16 20:36:18 +0000 | |
| commit | 831f52e0d5ec5332b19f313a75cc07e128bb52a9 (patch) | |
| tree | 1ba841efd141e11a671e7c6b77a0e89ffc777e8d | |
| parent | 91ec11ddadfbe7330838068640dc2d3dd21403ea (diff) | |
| parent | 314b35644b59a4d2f1dfa44afc9e7a2cd85da6fd (diff) | |
Merge "Do not specify a workSource when setting a delayed alarm so that the alarm can still wake the device up when the device is idle as the AlarmManager.FLAG_ALLOW_WHILE_IDLE_UNRESTRICTED flag indicates." into sc-dev
| -rw-r--r-- | services/core/java/com/android/server/location/injector/AlarmHelper.java | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/location/provider/LocationProviderManager.java | 18 |
2 files changed, 15 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/location/injector/AlarmHelper.java b/services/core/java/com/android/server/location/injector/AlarmHelper.java index f3fb9c84273b..91a1042d9625 100644 --- a/services/core/java/com/android/server/location/injector/AlarmHelper.java +++ b/services/core/java/com/android/server/location/injector/AlarmHelper.java @@ -33,7 +33,6 @@ public abstract class AlarmHelper { WorkSource workSource) { // helps ensure that we're not wasting system resources by setting alarms in the past/now Preconditions.checkArgument(delayMs > 0); - Preconditions.checkArgument(workSource != null); setDelayedAlarmInternal(delayMs, listener, workSource); } diff --git a/services/core/java/com/android/server/location/provider/LocationProviderManager.java b/services/core/java/com/android/server/location/provider/LocationProviderManager.java index 8c9068daed9b..8955c288391f 100644 --- a/services/core/java/com/android/server/location/provider/LocationProviderManager.java +++ b/services/core/java/com/android/server/location/provider/LocationProviderManager.java @@ -735,8 +735,12 @@ public class LocationProviderManager extends if (mExpirationRealtimeMs <= registerTimeMs) { onAlarm(); } else if (mExpirationRealtimeMs < Long.MAX_VALUE) { + // Set WorkSource to null in order to ensure the alarm wakes up the device even when + // it is idle. Do this when the cost of waking up the device is less than the power + // cost of not performing the actions set off by the alarm, such as unregistering a + // location request. mAlarmHelper.setDelayedAlarm(mExpirationRealtimeMs - registerTimeMs, this, - getRequest().getWorkSource()); + null); } // start listening for provider enabled/disabled events @@ -1122,8 +1126,12 @@ public class LocationProviderManager extends if (mExpirationRealtimeMs <= registerTimeMs) { onAlarm(); } else if (mExpirationRealtimeMs < Long.MAX_VALUE) { + // Set WorkSource to null in order to ensure the alarm wakes up the device even when + // it is idle. Do this when the cost of waking up the device is less than the power + // cost of not performing the actions set off by the alarm, such as unregistering a + // location request. mAlarmHelper.setDelayedAlarm(mExpirationRealtimeMs - registerTimeMs, this, - getRequest().getWorkSource()); + null); } } @@ -1995,7 +2003,11 @@ public class LocationProviderManager extends } } }; - mAlarmHelper.setDelayedAlarm(delayMs, mDelayedRegister, newRequest.getWorkSource()); + // Set WorkSource to null in order to ensure the alarm wakes up the device even when it + // is idle. Do this when the cost of waking up the device is less than the power cost of + // not performing the actions set off by the alarm, such as unregistering a location + // request. + mAlarmHelper.setDelayedAlarm(delayMs, mDelayedRegister, null); } return true; |