summaryrefslogtreecommitdiff
path: root/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
diff options
context:
space:
mode:
authorEric Erfanian <erfanian@google.com>2017-05-15 14:05:33 -0700
committerEric Erfanian <erfanian@google.com>2017-05-15 14:48:12 -0700
commitc857f90590e7d7fcffa89511982eb33afd34805f (patch)
tree9910fb95c6fdb10b06ee8be02a3374d2882005b9 /java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
parent738bb09adee2b56c99063a0264f8f76de393143b (diff)
Update Dialer to v10 RC32
This release was created following the instructions at: go/dialer-aosp-release Subsequent dialer releases will follow as O bugs are fixed, until we reach our final RC. Version: 10 Candidate: RC32 Branch: dialer-android_release_branch/153304843.1 dialer-android_20170416.00/dialer-android_20170416.00_RC32 This release contains the following bug fixes since RC17: Bug: 33176679 33272455 3646510 36773894 37297649 37413780 37513689 37640315 37680595 37698062 37873639 37901752 37919295 37953423 38062852 38069600 38137349 38173549 38180252 38191514 Test: make, on device Change-Id: I4e4bb630082758e418ff24892b7db3142c6eb09a
Diffstat (limited to 'java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java')
-rw-r--r--java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java35
1 files changed, 34 insertions, 1 deletions
diff --git a/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java b/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
index 9bfce0052..107234edc 100644
--- a/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
+++ b/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
@@ -23,9 +23,11 @@ import android.app.job.JobScheduler;
import android.app.job.JobService;
import android.content.ComponentName;
import android.content.Context;
+import android.content.SharedPreferences;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
import android.os.Parcelable;
+import android.preference.PreferenceManager;
import android.support.annotation.MainThread;
import com.android.dialer.constants.ScheduledJobIds;
import com.android.voicemail.impl.Assert;
@@ -41,11 +43,28 @@ public class TaskSchedulerJobService extends JobService implements TaskExecutor.
private static final String EXTRA_TASK_EXTRAS_ARRAY = "extra_task_extras_array";
+ private static final String EXTRA_JOB_ID = "extra_job_id";
+
+ private static final String EXPECTED_JOB_ID =
+ "com.android.voicemail.impl.scheduling.TaskSchedulerJobService.EXPECTED_JOB_ID";
+
+ private static final String NEXT_JOB_ID =
+ "com.android.voicemail.impl.scheduling.TaskSchedulerJobService.NEXT_JOB_ID";
+
private JobParameters jobParameters;
@Override
@MainThread
public boolean onStartJob(JobParameters params) {
+ int jobId = params.getTransientExtras().getInt(EXTRA_JOB_ID);
+ int expectedJobId =
+ PreferenceManager.getDefaultSharedPreferences(this).getInt(EXPECTED_JOB_ID, 0);
+ if (jobId != expectedJobId) {
+ VvmLog.e(
+ TAG, "Job " + jobId + " is not the last scheduled job " + expectedJobId + ", ignoring");
+ return false; // nothing more to do. Job not running in background.
+ }
+ VvmLog.i(TAG, "starting " + jobId);
jobParameters = params;
TaskExecutor.createRunningInstance(this);
TaskExecutor.getRunningInstance()
@@ -97,6 +116,13 @@ public class TaskSchedulerJobService extends JobService implements TaskExecutor.
jobScheduler.cancel(ScheduledJobIds.VVM_TASK_SCHEDULER_JOB);
}
Bundle extras = new Bundle();
+ int jobId = createJobId(context);
+ extras.putInt(EXTRA_JOB_ID, jobId);
+ PreferenceManager.getDefaultSharedPreferences(context)
+ .edit()
+ .putInt(EXPECTED_JOB_ID, jobId)
+ .apply();
+
extras.putParcelableArray(
EXTRA_TASK_EXTRAS_ARRAY, pendingTasks.toArray(new Bundle[pendingTasks.size()]));
JobInfo.Builder builder =
@@ -112,7 +138,7 @@ public class TaskSchedulerJobService extends JobService implements TaskExecutor.
VvmLog.i(TAG, "running job instantly.");
}
jobScheduler.schedule(builder.build());
- VvmLog.i(TAG, "job scheduled");
+ VvmLog.i(TAG, "job " + jobId + " scheduled");
}
/**
@@ -143,4 +169,11 @@ public class TaskSchedulerJobService extends JobService implements TaskExecutor.
}
return result;
}
+
+ private static int createJobId(Context context) {
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
+ int jobId = sharedPreferences.getInt(NEXT_JOB_ID, 0);
+ sharedPreferences.edit().putInt(NEXT_JOB_ID, jobId + 1).apply();
+ return jobId;
+ }
}