diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 66e9eb3a33ba..d94fc03751f3 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -549,6 +549,11 @@ public class ActivityManagerService extends IActivityManager.Stub // Whether we should use SCHED_FIFO for UI and RenderThreads. boolean mUseFifoUiScheduling = false; + // Use an offload queue for long broadcasts, e.g. BOOT_COMPLETED. + // For simplicity, since we statically declare the size of the array of BroadcastQueues, + // we still create this new offload queue, but never ever put anything on it. + boolean mEnableOffloadQueue; + BroadcastQueue mFgBroadcastQueue; BroadcastQueue mBgBroadcastQueue; BroadcastQueue mOffloadBroadcastQueue; @@ -2283,6 +2288,9 @@ public class ActivityManagerService extends IActivityManager.Stub // by default, no "slow" policy in this queue offloadConstants.SLOW_TIME = Integer.MAX_VALUE; + mEnableOffloadQueue = SystemProperties.getBoolean( + "persist.device_config.activity_manager_native_boot.offload_queue_enabled", false); + mFgBroadcastQueue = new BroadcastQueue(this, mHandler, "foreground", foreConstants, false); mBgBroadcastQueue = new BroadcastQueue(this, mHandler, @@ -18389,6 +18397,6 @@ public class ActivityManagerService extends IActivityManager.Stub } private boolean isOnOffloadQueue(int flags) { - return ((flags & Intent.FLAG_RECEIVER_OFFLOAD) != 0); + return (mEnableOffloadQueue && ((flags & Intent.FLAG_RECEIVER_OFFLOAD) != 0)); } } |