Loading apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java +32 −2 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server.job.controllers; import static com.android.server.job.JobSchedulerService.sElapsedRealtimeClock; import android.annotation.NonNull; import android.app.job.JobInfo; import android.content.BroadcastReceiver; import android.content.Context; Loading @@ -28,6 +29,7 @@ import android.os.Looper; import android.os.Message; import android.os.PowerManager; import android.os.UserHandle; import android.provider.DeviceConfig; import android.util.ArraySet; import android.util.IndentingPrintWriter; import android.util.Log; Loading Loading @@ -56,7 +58,10 @@ public final class DeviceIdleJobsController extends StateController { private static final boolean DEBUG = JobSchedulerService.DEBUG || Log.isLoggable(TAG, Log.DEBUG); private static final long BACKGROUND_JOBS_DELAY = 3000; /** Prefix to use with all constant keys in order to "sub-namespace" the keys. */ private static final String DIJC_CONSTANT_PREFIX = "dijc_"; private static final String KEY_BACKGROUND_JOBS_DELAY_MS = DIJC_CONSTANT_PREFIX + "background_jobs_delay_ms"; static final int PROCESS_BACKGROUND_JOBS = 1; Loading @@ -78,6 +83,8 @@ public final class DeviceIdleJobsController extends StateController { private int[] mDeviceIdleWhitelistAppIds; private int[] mPowerSaveTempWhitelistAppIds; private long mBackgroundJobsDelay; private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Loading Loading @@ -128,6 +135,9 @@ public final class DeviceIdleJobsController extends StateController { public DeviceIdleJobsController(JobSchedulerService service) { super(service); mBackgroundJobsDelay = mContext.getResources().getInteger( com.android.internal.R.integer.config_jobSchedulerBackgroundJobsDelay); mHandler = new DeviceIdleJobsDelayHandler(AppSchedulingModuleThread.get().getLooper()); // Register for device idle mode changes mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE); Loading Loading @@ -165,7 +175,7 @@ public final class DeviceIdleJobsController extends StateController { // When coming out of doze, process all foreground uids and EJs immediately, // while others will be processed after a delay of 3 seconds. mService.getJobStore().forEachJob(mShouldRushEvaluation, mDeviceIdleUpdateFunctor); mHandler.sendEmptyMessageDelayed(PROCESS_BACKGROUND_JOBS, BACKGROUND_JOBS_DELAY); mHandler.sendEmptyMessageDelayed(PROCESS_BACKGROUND_JOBS, mBackgroundJobsDelay); } } // Inform the job scheduler service about idle mode changes Loading Loading @@ -236,6 +246,26 @@ public final class DeviceIdleJobsController extends StateController { } } @Override public void processConstantLocked(@NonNull DeviceConfig.Properties properties, @NonNull String key) { switch (key) { case KEY_BACKGROUND_JOBS_DELAY_MS: mBackgroundJobsDelay = Math.max(0, properties.getLong(key, mBackgroundJobsDelay)); break; } } @Override public void dumpConstants(IndentingPrintWriter pw) { pw.println(); pw.print(DeviceIdleJobsController.class.getSimpleName()); pw.println(":"); pw.increaseIndent(); pw.print(KEY_BACKGROUND_JOBS_DELAY_MS, mBackgroundJobsDelay).println(); pw.decreaseIndent(); } @Override public void dumpControllerStateLocked(final IndentingPrintWriter pw, final Predicate<JobStatus> predicate) { Loading core/res/res/values/config.xml +4 −0 Original line number Diff line number Diff line Loading @@ -4459,6 +4459,10 @@ etc. dialogs. --> <string translatable="false" name="config_appsNotReportingCrashes"></string> <!-- Specifies the delay in milliseconds for JobScheduler to postpone the running of regular jobs when coming out of doze --> <integer name="config_jobSchedulerBackgroundJobsDelay">3000</integer> <!-- Inactivity threshold (in milliseconds) used in JobScheduler. JobScheduler will consider the device to be "idle" after being inactive for this long. --> <integer name="config_jobSchedulerInactivityIdleThreshold">1860000</integer> Loading core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -3016,6 +3016,7 @@ <java-symbol type="integer" name="config_defaultNightMode" /> <java-symbol type="integer" name="config_jobSchedulerBackgroundJobsDelay" /> <java-symbol type="integer" name="config_jobSchedulerInactivityIdleThreshold" /> <java-symbol type="integer" name="config_jobSchedulerInactivityIdleThresholdOnStablePower" /> <java-symbol type="integer" name="config_jobSchedulerIdleWindowSlop" /> Loading Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java +32 −2 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server.job.controllers; import static com.android.server.job.JobSchedulerService.sElapsedRealtimeClock; import android.annotation.NonNull; import android.app.job.JobInfo; import android.content.BroadcastReceiver; import android.content.Context; Loading @@ -28,6 +29,7 @@ import android.os.Looper; import android.os.Message; import android.os.PowerManager; import android.os.UserHandle; import android.provider.DeviceConfig; import android.util.ArraySet; import android.util.IndentingPrintWriter; import android.util.Log; Loading Loading @@ -56,7 +58,10 @@ public final class DeviceIdleJobsController extends StateController { private static final boolean DEBUG = JobSchedulerService.DEBUG || Log.isLoggable(TAG, Log.DEBUG); private static final long BACKGROUND_JOBS_DELAY = 3000; /** Prefix to use with all constant keys in order to "sub-namespace" the keys. */ private static final String DIJC_CONSTANT_PREFIX = "dijc_"; private static final String KEY_BACKGROUND_JOBS_DELAY_MS = DIJC_CONSTANT_PREFIX + "background_jobs_delay_ms"; static final int PROCESS_BACKGROUND_JOBS = 1; Loading @@ -78,6 +83,8 @@ public final class DeviceIdleJobsController extends StateController { private int[] mDeviceIdleWhitelistAppIds; private int[] mPowerSaveTempWhitelistAppIds; private long mBackgroundJobsDelay; private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Loading Loading @@ -128,6 +135,9 @@ public final class DeviceIdleJobsController extends StateController { public DeviceIdleJobsController(JobSchedulerService service) { super(service); mBackgroundJobsDelay = mContext.getResources().getInteger( com.android.internal.R.integer.config_jobSchedulerBackgroundJobsDelay); mHandler = new DeviceIdleJobsDelayHandler(AppSchedulingModuleThread.get().getLooper()); // Register for device idle mode changes mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE); Loading Loading @@ -165,7 +175,7 @@ public final class DeviceIdleJobsController extends StateController { // When coming out of doze, process all foreground uids and EJs immediately, // while others will be processed after a delay of 3 seconds. mService.getJobStore().forEachJob(mShouldRushEvaluation, mDeviceIdleUpdateFunctor); mHandler.sendEmptyMessageDelayed(PROCESS_BACKGROUND_JOBS, BACKGROUND_JOBS_DELAY); mHandler.sendEmptyMessageDelayed(PROCESS_BACKGROUND_JOBS, mBackgroundJobsDelay); } } // Inform the job scheduler service about idle mode changes Loading Loading @@ -236,6 +246,26 @@ public final class DeviceIdleJobsController extends StateController { } } @Override public void processConstantLocked(@NonNull DeviceConfig.Properties properties, @NonNull String key) { switch (key) { case KEY_BACKGROUND_JOBS_DELAY_MS: mBackgroundJobsDelay = Math.max(0, properties.getLong(key, mBackgroundJobsDelay)); break; } } @Override public void dumpConstants(IndentingPrintWriter pw) { pw.println(); pw.print(DeviceIdleJobsController.class.getSimpleName()); pw.println(":"); pw.increaseIndent(); pw.print(KEY_BACKGROUND_JOBS_DELAY_MS, mBackgroundJobsDelay).println(); pw.decreaseIndent(); } @Override public void dumpControllerStateLocked(final IndentingPrintWriter pw, final Predicate<JobStatus> predicate) { Loading
core/res/res/values/config.xml +4 −0 Original line number Diff line number Diff line Loading @@ -4459,6 +4459,10 @@ etc. dialogs. --> <string translatable="false" name="config_appsNotReportingCrashes"></string> <!-- Specifies the delay in milliseconds for JobScheduler to postpone the running of regular jobs when coming out of doze --> <integer name="config_jobSchedulerBackgroundJobsDelay">3000</integer> <!-- Inactivity threshold (in milliseconds) used in JobScheduler. JobScheduler will consider the device to be "idle" after being inactive for this long. --> <integer name="config_jobSchedulerInactivityIdleThreshold">1860000</integer> Loading
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -3016,6 +3016,7 @@ <java-symbol type="integer" name="config_defaultNightMode" /> <java-symbol type="integer" name="config_jobSchedulerBackgroundJobsDelay" /> <java-symbol type="integer" name="config_jobSchedulerInactivityIdleThreshold" /> <java-symbol type="integer" name="config_jobSchedulerInactivityIdleThresholdOnStablePower" /> <java-symbol type="integer" name="config_jobSchedulerIdleWindowSlop" /> Loading