diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobService.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobService.java
index aa28fb2..bbc87a0 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobService.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobService.java
@@ -16,6 +16,8 @@
 
 package androidx.work.impl.background.systemjob;
 
+import static androidx.work.impl.background.systemjob.SystemJobInfoConverter.EXTRA_WORK_SPEC_ID;
+
 import android.app.Application;
 import android.app.job.JobParameters;
 import android.app.job.JobService;
@@ -24,6 +26,7 @@
 import android.text.TextUtils;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.annotation.RequiresApi;
 import androidx.annotation.RestrictTo;
 import androidx.work.Logger;
@@ -86,22 +89,14 @@
     }
 
     @Override
-    public boolean onStartJob(JobParameters params) {
+    public boolean onStartJob(@NonNull JobParameters params) {
         if (mWorkManagerImpl == null) {
             Logger.get().debug(TAG, "WorkManager is not initialized; requesting retry.");
             jobFinished(params, true);
             return false;
         }
 
-        PersistableBundle extras = params.getExtras();
-        // This can be null, possibly on a device-specific/API-specific (23) situation.  b/134028277
-        //noinspection ConstantConditions
-        if (extras == null) {
-            Logger.get().error(TAG, "No extras in JobParameters.");
-            return false;
-        }
-
-        String workSpecId = extras.getString(SystemJobInfoConverter.EXTRA_WORK_SPEC_ID);
+        String workSpecId = getWorkSpecIdFromJobParameters(params);
         if (TextUtils.isEmpty(workSpecId)) {
             Logger.get().error(TAG, "WorkSpec id not found!");
             return false;
@@ -152,21 +147,13 @@
     }
 
     @Override
-    public boolean onStopJob(JobParameters params) {
+    public boolean onStopJob(@NonNull JobParameters params) {
         if (mWorkManagerImpl == null) {
             Logger.get().debug(TAG, "WorkManager is not initialized; requesting retry.");
             return true;
         }
 
-        PersistableBundle extras = params.getExtras();
-        // This can be null, possibly on a device-specific/API-specific (23) situation.  b/134028277
-        //noinspection ConstantConditions
-        if (extras == null) {
-            Logger.get().error(TAG, "No extras in JobParameters.");
-            return false;
-        }
-
-        String workSpecId = extras.getString(SystemJobInfoConverter.EXTRA_WORK_SPEC_ID);
+        String workSpecId = getWorkSpecIdFromJobParameters(params);
         if (TextUtils.isEmpty(workSpecId)) {
             Logger.get().error(TAG, "WorkSpec id not found!");
             return false;
@@ -192,4 +179,18 @@
             jobFinished(parameters, needsReschedule);
         }
     }
+
+    @Nullable
+    @SuppressWarnings("ConstantConditions")
+    private static String getWorkSpecIdFromJobParameters(@NonNull JobParameters parameters) {
+        try {
+            PersistableBundle extras = parameters.getExtras();
+            if (extras != null && extras.containsKey(EXTRA_WORK_SPEC_ID)) {
+                return extras.getString(EXTRA_WORK_SPEC_ID);
+            }
+        } catch (NullPointerException e) {
+            // b/138441699: BaseBundle.getString sometimes throws an NPE.  Ignore and return null.
+        }
+        return null;
+    }
 }
