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 am: 831f52e0d5
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15284032 Change-Id: I8ecf613309fd8f2ee6b26db1e82639fa249e3cdb
This commit is contained in:
@@ -33,7 +33,6 @@ public abstract class AlarmHelper {
|
|||||||
WorkSource workSource) {
|
WorkSource workSource) {
|
||||||
// helps ensure that we're not wasting system resources by setting alarms in the past/now
|
// helps ensure that we're not wasting system resources by setting alarms in the past/now
|
||||||
Preconditions.checkArgument(delayMs > 0);
|
Preconditions.checkArgument(delayMs > 0);
|
||||||
Preconditions.checkArgument(workSource != null);
|
|
||||||
setDelayedAlarmInternal(delayMs, listener, workSource);
|
setDelayedAlarmInternal(delayMs, listener, workSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -735,8 +735,12 @@ public class LocationProviderManager extends
|
|||||||
if (mExpirationRealtimeMs <= registerTimeMs) {
|
if (mExpirationRealtimeMs <= registerTimeMs) {
|
||||||
onAlarm();
|
onAlarm();
|
||||||
} else if (mExpirationRealtimeMs < Long.MAX_VALUE) {
|
} 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,
|
mAlarmHelper.setDelayedAlarm(mExpirationRealtimeMs - registerTimeMs, this,
|
||||||
getRequest().getWorkSource());
|
null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// start listening for provider enabled/disabled events
|
// start listening for provider enabled/disabled events
|
||||||
@@ -1122,8 +1126,12 @@ public class LocationProviderManager extends
|
|||||||
if (mExpirationRealtimeMs <= registerTimeMs) {
|
if (mExpirationRealtimeMs <= registerTimeMs) {
|
||||||
onAlarm();
|
onAlarm();
|
||||||
} else if (mExpirationRealtimeMs < Long.MAX_VALUE) {
|
} 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,
|
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;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user