diff --git a/firebase-messaging/src/main/java/com/google/firebase/messaging/SyncTask.java b/firebase-messaging/src/main/java/com/google/firebase/messaging/SyncTask.java
index c0c4074c11e..9969d45305d 100644
--- a/firebase-messaging/src/main/java/com/google/firebase/messaging/SyncTask.java
+++ b/firebase-messaging/src/main/java/com/google/firebase/messaging/SyncTask.java
@@ -161,6 +161,7 @@ boolean isDeviceConnected() {
   static class ConnectivityChangeReceiver extends BroadcastReceiver {
 
     @Nullable private SyncTask task; // task is set to null after it has been fired.
+    @Nullable private Context context;
 
     public ConnectivityChangeReceiver(SyncTask task) {
       this.task = task;
@@ -171,7 +172,10 @@ public void registerReceiver() {
         Log.d(TAG, "Connectivity change received registered");
       }
       IntentFilter intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
-      task.getContext().registerReceiver(this, intentFilter);
+      if (task != null) {
+        context = task.getContext();
+        context.registerReceiver(this, intentFilter);
+      }
     }
 
     @Override
@@ -191,8 +195,10 @@ public void onReceive(Context context, Intent intent) {
         Log.d(TAG, "Connectivity changed. Starting background sync.");
       }
       task.firebaseMessaging.enqueueTaskWithDelaySeconds(task, 0);
-      task.getContext().unregisterReceiver(this);
-      task = null;
+      if (this.context != null) {
+        this.context.unregisterReceiver(this);
+        task = null;
+      }
     }
   }