diff options
author | Kweku Adams <kwekua@google.com> | 2021-07-22 10:47:06 -0700 |
---|---|---|
committer | Kweku Adams <kwekua@google.com> | 2021-07-23 22:57:40 +0000 |
commit | e2ca493505cd4e54feebcd5ff9a1ab3a42954963 (patch) | |
tree | b10ca6a2a49781012e5097ba8218dc8da64e7e4a | |
parent | 6ae2d75bbadd686eadce16ff93eb8e65f3302645 (diff) | |
download | CalendarProvider-e2ca493505cd4e54feebcd5ff9a1ab3a42954963.tar.gz |
Actually stop running when job is stopped.android-12.0.0_r32android-12.0.0_r29android-12.0.0_r28android-12.0.0_r27android-12.0.0_r26android-12.0.0_r21android-12.0.0_r20android-12.0.0_r19android-12.0.0_r18android-12.0.0_r16android12-qpr1-releaseandroid12-qpr1-d-s3-releaseandroid12-qpr1-d-s2-releaseandroid12-qpr1-d-s1-releaseandroid12-qpr1-d-releaseandroid12-dev
Make sure the worker thread doesn't start processing new JobWorkItems
after JS calls onStopJob().
Bug: 194358301
Test: atest CalendarProviderTests
Change-Id: I0af5291c0f8506eeb078ca1515249b9b1b6ff880
-rw-r--r-- | src/com/android/providers/calendar/CalendarProviderJobService.java | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/com/android/providers/calendar/CalendarProviderJobService.java b/src/com/android/providers/calendar/CalendarProviderJobService.java index bfec48a..908304d 100644 --- a/src/com/android/providers/calendar/CalendarProviderJobService.java +++ b/src/com/android/providers/calendar/CalendarProviderJobService.java @@ -29,6 +29,8 @@ public class CalendarProviderJobService extends JobService { private static final String TAG = CalendarProvider2.TAG; static final int JOB_ID = CalendarProviderJobService.class.hashCode(); + private volatile boolean canRun; + @Override public boolean onStartJob(JobParameters params) { if (!params.isExpeditedJob()) { @@ -44,6 +46,7 @@ public class CalendarProviderJobService extends JobService { return false; } + canRun = true; final CalendarProvider2 provider = (CalendarProvider2) cprovider; new Thread(() -> { @@ -58,6 +61,9 @@ public class CalendarProviderJobService extends JobService { if (Log.isLoggable(TAG, Log.DEBUG)) { Log.d(TAG, "Next alarm set."); } + if (!canRun) { + break; + } params.completeWork(jwi); } }).start(); @@ -70,6 +76,7 @@ public class CalendarProviderJobService extends JobService { Slog.wtf(TAG, "CalendarProviderJobService was stopped due to " + JobParameters.getInternalReasonCodeDescription(params.getInternalStopReasonCode()) + "(" + params.getStopReason() + ")"); + canRun = false; return true; } } |