Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c72035d authored by Xin Guan's avatar Xin Guan Committed by Android (Google) Code Review
Browse files

Merge "JobScheduler: Make the background job delay configurable" into main

parents 9daca6f9 921ba5d7
Loading
Loading
Loading
Loading
+32 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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;

@@ -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) {
@@ -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);
@@ -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
@@ -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) {
+4 −0
Original line number Diff line number Diff line
@@ -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>
+1 −0
Original line number Diff line number Diff line
@@ -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" />