Merge "Reschedule jobs that crash partway through" into oc-dev
diff --git a/core/java/android/app/job/JobInfo.java b/core/java/android/app/job/JobInfo.java
index 78e4c0d..f9094c0 100644
--- a/core/java/android/app/job/JobInfo.java
+++ b/core/java/android/app/job/JobInfo.java
@@ -83,6 +83,9 @@
/* Minimum flex for a periodic job, in milliseconds. */
private static final long MIN_FLEX_MILLIS = 5 * 60 * 1000L; // 5 minutes
+ /* Minimum backoff interval for a job, in milliseconds */
+ private static final long MIN_BACKOFF_MILLIS = 10 * 1000L; // 10 seconds
+
/**
* 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
@@ -106,6 +109,14 @@
}
/**
+ * Query the minimum automatic-reschedule backoff interval permitted for jobs.
+ * @hide
+ */
+ public static final long getMinBackoffMillis() {
+ return MIN_BACKOFF_MILLIS;
+ }
+
+ /**
* Default type of backoff.
* @hide
*/
@@ -361,7 +372,8 @@
* job does not recur periodically.
*/
public long getIntervalMillis() {
- return intervalMillis >= getMinPeriodMillis() ? intervalMillis : getMinPeriodMillis();
+ final long minInterval = getMinPeriodMillis();
+ return intervalMillis >= minInterval ? intervalMillis : minInterval;
}
/**
@@ -381,7 +393,8 @@
* to 5 seconds.
*/
public long getInitialBackoffMillis() {
- return initialBackoffMillis;
+ final long minBackoff = getMinBackoffMillis();
+ return initialBackoffMillis >= minBackoff ? initialBackoffMillis : minBackoff;
}
/**
diff --git a/services/core/java/com/android/server/job/JobServiceContext.java b/services/core/java/com/android/server/job/JobServiceContext.java
index 1337046..618feb1 100644
--- a/services/core/java/com/android/server/job/JobServiceContext.java
+++ b/services/core/java/com/android/server/job/JobServiceContext.java
@@ -597,7 +597,8 @@
service.stopJob(mParams);
} catch (RemoteException e) {
Slog.e(TAG, "Error sending onStopJob to client.", e);
- closeAndCleanupJobH(false /* reschedule */);
+ // The job's host app apparently crashed during the job, so we should reschedule.
+ closeAndCleanupJobH(true /* reschedule */);
}
}