summaryrefslogtreecommitdiffstats
path: root/services/backup
diff options
context:
space:
mode:
authorChristopher Tate <ctate@google.com>2015-05-12 17:06:33 -0700
committerChris Tate <ctate@android.com>2015-05-30 00:49:26 +0000
commit3d7e0d8e21e2ba706573fc43f8a7e5654814fb11 (patch)
tree2c15d117ab98c7aed3edaa8843f3b8031ba86383 /services/backup
parentcb81d183672a3d9858ade10a997990c5d66a1be3 (diff)
downloadframeworks_base-3d7e0d8e21e2ba706573fc43f8a7e5654814fb11.zip
frameworks_base-3d7e0d8e21e2ba706573fc43f8a7e5654814fb11.tar.gz
frameworks_base-3d7e0d8e21e2ba706573fc43f8a7e5654814fb11.tar.bz2
Adjust key/value backup scheduling
We now try to perform key/value backups only while charging, proceeding off-charger only after we've waited a full day for the device to be plugged in. Bug 21076663 Change-Id: Ib32c9f8bfaf8a310f5f388907e38a28d3c54bd8e
Diffstat (limited to 'services/backup')
-rw-r--r--services/backup/java/com/android/server/backup/KeyValueBackupJob.java14
1 files changed, 8 insertions, 6 deletions
diff --git a/services/backup/java/com/android/server/backup/KeyValueBackupJob.java b/services/backup/java/com/android/server/backup/KeyValueBackupJob.java
index a4489c1..e3ff5ce 100644
--- a/services/backup/java/com/android/server/backup/KeyValueBackupJob.java
+++ b/services/backup/java/com/android/server/backup/KeyValueBackupJob.java
@@ -38,16 +38,17 @@ public class KeyValueBackupJob extends JobService {
new ComponentName("android", KeyValueBackupJob.class.getName());
private static final int JOB_ID = 0x5039;
- // Once someone asks for a backup, this is how long we hold off, batching
- // up additional requests, before running the actual backup pass. Privileged
- // callers can always trigger an immediate pass via BackupManager.backupNow().
+ // Minimum wait time between backups even while we're on charger
static final long BATCH_INTERVAL = 4 * AlarmManager.INTERVAL_HOUR;
// Random variation in next-backup scheduling time to avoid server load spikes
private static final int FUZZ_MILLIS = 10 * 60 * 1000;
- // Don't let the job scheduler defer forever; give it a (lenient) deadline
- private static final long MAX_DEFERRAL = 1 * AlarmManager.INTERVAL_HOUR;
+ // Once someone asks for a backup, this is how long we hold off until we find
+ // an on-charging opportunity. If we hit this max latency we will run the operation
+ // regardless. Privileged callers can always trigger an immediate pass via
+ // BackupManager.backupNow().
+ private static final long MAX_DEFERRAL = AlarmManager.INTERVAL_DAY;
private static boolean sScheduled = false;
private static long sNextScheduled = 0;
@@ -70,7 +71,8 @@ public class KeyValueBackupJob extends JobService {
JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, sKeyValueJobService)
.setMinimumLatency(delay)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
- .setOverrideDeadline(delay + MAX_DEFERRAL);
+ .setRequiresCharging(true)
+ .setOverrideDeadline(MAX_DEFERRAL);
js.schedule(builder.build());
sNextScheduled = System.currentTimeMillis() + delay;