summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sudheer Shanka <sudheersai@google.com> 2022-11-30 23:27:26 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-11-30 23:27:26 +0000
commit91c07d22e5958c1e2f709da217c5839e653cf087 (patch)
treea2c94bd67f1b1e417edb4d34e2fa7837871e0926
parent627b85d9fc08cad96e1628779d01f9921316da49 (diff)
parentced7d76ee0cdd2f3a15be8c1cfd65e46df659c79 (diff)
Merge "Apply "most-recent" delivery policy to certain broadcasts."
-rw-r--r--apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java22
1 files changed, 16 insertions, 6 deletions
diff --git a/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java b/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java
index e3bd5acd7bc7..dcc6aa6a1d67 100644
--- a/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java
+++ b/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java
@@ -29,6 +29,7 @@ import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.app.ActivityManagerInternal;
import android.app.AlarmManager;
+import android.app.BroadcastOptions;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.IIntentReceiver;
@@ -314,7 +315,9 @@ public class DeviceIdleController extends SystemService
private Sensor mMotionSensor;
private LocationRequest mLocationRequest;
private Intent mIdleIntent;
+ private Bundle mIdleIntentOptions;
private Intent mLightIdleIntent;
+ private Bundle mLightIdleIntentOptions;
private AnyMotionDetector mAnyMotionDetector;
private final AppStateTrackerImpl mAppStateTracker;
@GuardedBy("this")
@@ -1798,10 +1801,12 @@ public class DeviceIdleController extends SystemService
} catch (RemoteException e) {
}
if (deepChanged) {
- getContext().sendBroadcastAsUser(mIdleIntent, UserHandle.ALL);
+ getContext().sendBroadcastAsUser(mIdleIntent, UserHandle.ALL,
+ null /* receiverPermission */, mIdleIntentOptions);
}
if (lightChanged) {
- getContext().sendBroadcastAsUser(mLightIdleIntent, UserHandle.ALL);
+ getContext().sendBroadcastAsUser(mLightIdleIntent, UserHandle.ALL,
+ null /* receiverPermission */, mLightIdleIntentOptions);
}
EventLogTags.writeDeviceIdleOnComplete();
mGoingIdleWakeLock.release();
@@ -1821,13 +1826,13 @@ public class DeviceIdleController extends SystemService
incActiveIdleOps();
mLocalActivityManager.broadcastIntentWithCallback(mIdleIntent,
mIdleStartedDoneReceiver, null, UserHandle.USER_ALL,
- null, null, null);
+ null, null, mIdleIntentOptions);
}
if (lightChanged) {
incActiveIdleOps();
mLocalActivityManager.broadcastIntentWithCallback(mLightIdleIntent,
mIdleStartedDoneReceiver, null, UserHandle.USER_ALL,
- null, null, null);
+ null, null, mLightIdleIntentOptions);
}
// Always start with one active op for the message being sent here.
// Now we are done!
@@ -1849,10 +1854,12 @@ public class DeviceIdleController extends SystemService
} catch (RemoteException e) {
}
if (deepChanged) {
- getContext().sendBroadcastAsUser(mIdleIntent, UserHandle.ALL);
+ getContext().sendBroadcastAsUser(mIdleIntent, UserHandle.ALL,
+ null /* receiverPermission */, mIdleIntentOptions);
}
if (lightChanged) {
- getContext().sendBroadcastAsUser(mLightIdleIntent, UserHandle.ALL);
+ getContext().sendBroadcastAsUser(mLightIdleIntent, UserHandle.ALL,
+ null /* receiverPermission */, mLightIdleIntentOptions);
}
EventLogTags.writeDeviceIdleOffComplete();
} break;
@@ -2531,6 +2538,9 @@ public class DeviceIdleController extends SystemService
mLightIdleIntent = new Intent(PowerManager.ACTION_LIGHT_DEVICE_IDLE_MODE_CHANGED);
mLightIdleIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY
| Intent.FLAG_RECEIVER_FOREGROUND);
+ final BroadcastOptions options = BroadcastOptions.makeBasic();
+ options.setDeliveryGroupPolicy(BroadcastOptions.DELIVERY_GROUP_POLICY_MOST_RECENT);
+ mIdleIntentOptions = mLightIdleIntentOptions = options.toBundle();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);