Fix error-prone warnings in JobIntentService.
Fixes SynchronizeOnNonFinalField warnings in JobIntentService
where mCompatQueue was not final and thus could have been changed
causing locking on different objects.
Test: ./gradlew support-compat:assembleErrorProne
Change-Id: I24442d1e988d082b33c7d8bbf1f2f7f61cc3ed48
diff --git a/compat/java/android/support/v4/app/JobIntentService.java b/compat/java/android/support/v4/app/JobIntentService.java
index daeb55b..a5417e6 100644
--- a/compat/java/android/support/v4/app/JobIntentService.java
+++ b/compat/java/android/support/v4/app/JobIntentService.java
@@ -26,6 +26,7 @@
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
+import android.os.Build;
import android.os.IBinder;
import android.os.PowerManager;
import android.support.annotation.NonNull;
@@ -93,10 +94,11 @@
static final boolean DEBUG = false;
CompatJobEngine mJobImpl;
- ArrayList<CompatWorkItem> mCompatQueue;
WorkEnqueuer mCompatWorkEnqueuer;
CommandProcessor mCurProcessor;
+ final ArrayList<CompatWorkItem> mCompatQueue;
+
static final Object sLock = new Object();
static final HashMap<Class, WorkEnqueuer> sClassWorkEnqueuer = new HashMap<>();
@@ -385,19 +387,22 @@
* Default empty constructor.
*/
public JobIntentService() {
+ if (Build.VERSION.SDK_INT >= 26) {
+ mCompatQueue = null;
+ } else {
+ mCompatQueue = new ArrayList<>();
+ }
}
@Override
public void onCreate() {
super.onCreate();
if (DEBUG) Log.d(TAG, "CREATING: " + this);
- if (BuildCompat.isAtLeastO()) {
+ if (Build.VERSION.SDK_INT >= 26) {
mJobImpl = new JobServiceEngineImpl(this);
- mCompatQueue = null;
mCompatWorkEnqueuer = null;
} else {
mJobImpl = null;
- mCompatQueue = new ArrayList<>();
mCompatWorkEnqueuer = getWorkEnqueuer(this, this.getClass(), false, 0);
mCompatWorkEnqueuer.serviceCreated();
}