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. Bug: 188302603,193260066 Test: presubmits Change-Id: I2cc8f7bb49d626644f9b4257b04f4f8ea5fc3d2f
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -705,8 +705,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
|
||||
@@ -1092,8 +1096,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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1955,7 +1963,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;
|
||||
|
||||
Reference in New Issue
Block a user