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

Commit 10be4e90 authored by Christopher Tate's avatar Christopher Tate
Browse files

Lower the minimum period for periodic jobs to 15 minutes

Also make the minimum flex & period available via method call
rather than as hardcoded API constants.

Bug 27619643

Change-Id: Ib4afa427e9b21e13085d245e45b05d70d99724d4
parent 3c8702dd
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -6245,6 +6245,8 @@ package android.app.job {
    method public long getIntervalMillis();
    method public long getMaxExecutionDelayMillis();
    method public long getMinLatencyMillis();
    method public static final long getMinimumFlex();
    method public static final long getMinimumPeriod();
    method public int getNetworkType();
    method public android.content.ComponentName getService();
    method public android.app.job.JobInfo.TriggerContentUri[] getTriggerContentUris();
@@ -6258,8 +6260,6 @@ package android.app.job {
    field public static final android.os.Parcelable.Creator<android.app.job.JobInfo> CREATOR;
    field public static final long DEFAULT_INITIAL_BACKOFF_MILLIS = 30000L; // 0x7530L
    field public static final long MAX_BACKOFF_DELAY_MILLIS = 18000000L; // 0x112a880L
    field public static final long MIN_FLEX_MILLIS = 300000L; // 0x493e0L
    field public static final long MIN_PERIOD_MILLIS = 3600000L; // 0x36ee80L
    field public static final int NETWORK_TYPE_ANY = 1; // 0x1
    field public static final int NETWORK_TYPE_NONE = 0; // 0x0
    field public static final int NETWORK_TYPE_UNMETERED = 2; // 0x2
+2 −2
Original line number Diff line number Diff line
@@ -6511,6 +6511,8 @@ package android.app.job {
    method public long getIntervalMillis();
    method public long getMaxExecutionDelayMillis();
    method public long getMinLatencyMillis();
    method public static final long getMinimumFlex();
    method public static final long getMinimumPeriod();
    method public int getNetworkType();
    method public android.content.ComponentName getService();
    method public android.app.job.JobInfo.TriggerContentUri[] getTriggerContentUris();
@@ -6524,8 +6526,6 @@ package android.app.job {
    field public static final android.os.Parcelable.Creator<android.app.job.JobInfo> CREATOR;
    field public static final long DEFAULT_INITIAL_BACKOFF_MILLIS = 30000L; // 0x7530L
    field public static final long MAX_BACKOFF_DELAY_MILLIS = 18000000L; // 0x112a880L
    field public static final long MIN_FLEX_MILLIS = 300000L; // 0x493e0L
    field public static final long MIN_PERIOD_MILLIS = 3600000L; // 0x36ee80L
    field public static final int NETWORK_TYPE_ANY = 1; // 0x1
    field public static final int NETWORK_TYPE_NONE = 0; // 0x0
    field public static final int NETWORK_TYPE_UNMETERED = 2; // 0x2
+2 −2
Original line number Diff line number Diff line
@@ -6249,6 +6249,8 @@ package android.app.job {
    method public long getIntervalMillis();
    method public long getMaxExecutionDelayMillis();
    method public long getMinLatencyMillis();
    method public static final long getMinimumFlex();
    method public static final long getMinimumPeriod();
    method public int getNetworkType();
    method public android.content.ComponentName getService();
    method public android.app.job.JobInfo.TriggerContentUri[] getTriggerContentUris();
@@ -6262,8 +6264,6 @@ package android.app.job {
    field public static final android.os.Parcelable.Creator<android.app.job.JobInfo> CREATOR;
    field public static final long DEFAULT_INITIAL_BACKOFF_MILLIS = 30000L; // 0x7530L
    field public static final long MAX_BACKOFF_DELAY_MILLIS = 18000000L; // 0x112a880L
    field public static final long MIN_FLEX_MILLIS = 300000L; // 0x493e0L
    field public static final long MIN_PERIOD_MILLIS = 3600000L; // 0x36ee80L
    field public static final int NETWORK_TYPE_ANY = 1; // 0x1
    field public static final int NETWORK_TYPE_NONE = 0; // 0x0
    field public static final int NETWORK_TYPE_UNMETERED = 2; // 0x2
+29 −6
Original line number Diff line number Diff line
@@ -73,9 +73,32 @@ public class JobInfo implements Parcelable {
    public static final int BACKOFF_POLICY_EXPONENTIAL = 1;

    /* Minimum interval for a periodic job, in milliseconds. */
    public static final long MIN_PERIOD_MILLIS = 60 * 60 * 1000L;   // 60 minutes
    private static final long MIN_PERIOD_MILLIS = 15 * 60 * 1000L;   // 15 minutes

    /* Minimum flex for a periodic job, in milliseconds. */
    public static final long MIN_FLEX_MILLIS = 5 * 60 * 1000L; // 5 minutes
    private static final long MIN_FLEX_MILLIS = 5 * 60 * 1000L; // 5 minutes

    /**
     * Query the minimum interval allowed for periodic scheduled jobs.  Attempting
     * to declare a smaller period that this when scheduling a job will result in a
     * job that is still periodic, but will run with this effective period.
     *
     * @return The minimum available interval for scheduling periodic jobs, in milliseconds.
     */
    public static final long getMinimumPeriod() {
        return MIN_PERIOD_MILLIS;
    }

    /**
     * Query the minimum flex time allowed for periodic scheduled jobs.  Attempting
     * to declare a shorter flex time than this when scheduling such a job will
     * result in this amount as the effective flex time for the job.
     *
     * @return The minimum available flex time for scheduling periodic jobs, in milliseconds.
     */
    public static final long getMinimumFlex() {
        return MIN_FLEX_MILLIS;
    }

    /**
     * Default type of backoff.
@@ -227,7 +250,7 @@ public class JobInfo implements Parcelable {
     * job does not recur periodically.
     */
    public long getIntervalMillis() {
        return intervalMillis >= MIN_PERIOD_MILLIS ? intervalMillis : MIN_PERIOD_MILLIS;
        return intervalMillis >= getMinimumPeriod() ? intervalMillis : getMinimumPeriod();
    }

    /**
@@ -236,7 +259,7 @@ public class JobInfo implements Parcelable {
    public long getFlexMillis() {
        long interval = getIntervalMillis();
        long percentClamp = 5 * interval / 100;
        long clampedFlex = Math.max(flexMillis, Math.max(percentClamp, MIN_FLEX_MILLIS));
        long clampedFlex = Math.max(flexMillis, Math.max(percentClamp, getMinimumFlex()));
        return clampedFlex <= interval ? clampedFlex : interval;
    }

@@ -565,9 +588,9 @@ public class JobInfo implements Parcelable {
         * Specify that this job should recur with the provided interval and flex. The job can
         * execute at any time in a window of flex length at the end of the period.
         * @param intervalMillis Millisecond interval for which this job will repeat. A minimum
         *                       value of {@link #MIN_PERIOD_MILLIS} is enforced.
         *                       value of {@link #getMinimumPeriod()} is enforced.
         * @param flexMillis Millisecond flex for this job. Flex is clamped to be at least
         *                   {@link #MIN_FLEX_MILLIS} or 5 percent of the period, whichever is
         *                   {@link #getMinimumFlex()} or 5 percent of the period, whichever is
         *                   higher.
         */
        public Builder setPeriodic(long intervalMillis, long flexMillis) {