diff --git a/src/com/android/car/systemupdater/SystemUpdaterActivity.java b/src/com/android/car/systemupdater/SystemUpdaterActivity.java
index ea4e83a..13f6fcc 100644
--- a/src/com/android/car/systemupdater/SystemUpdaterActivity.java
+++ b/src/com/android/car/systemupdater/SystemUpdaterActivity.java
@@ -15,6 +15,8 @@
  */
 package com.android.car.systemupdater;
 
+import static com.android.car.systemupdater.UpdateLayoutFragment.EXTRA_RESUME_UPDATE;
+
 import android.Manifest;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
@@ -53,10 +55,18 @@
         setSupportActionBar(toolbar);
 
         if (savedInstanceState == null) {
-            DeviceListFragment fragment = new DeviceListFragment();
-            getSupportFragmentManager().beginTransaction()
-                    .replace(R.id.device_container, fragment)
-                    .commitNow();
+            Bundle intentExtras = getIntent().getExtras();
+            if (intentExtras != null && intentExtras.getBoolean(EXTRA_RESUME_UPDATE)) {
+                UpdateLayoutFragment fragment = UpdateLayoutFragment.newResumedInstance();
+                getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.device_container, fragment)
+                        .commitNow();
+            } else {
+                DeviceListFragment fragment = new DeviceListFragment();
+                getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.device_container, fragment)
+                        .commitNow();
+            }
         }
     }
 
diff --git a/src/com/android/car/systemupdater/UpdateLayoutFragment.java b/src/com/android/car/systemupdater/UpdateLayoutFragment.java
index c10b1f1..933dbe5 100644
--- a/src/com/android/car/systemupdater/UpdateLayoutFragment.java
+++ b/src/com/android/car/systemupdater/UpdateLayoutFragment.java
@@ -15,7 +15,13 @@
  */
 package com.android.car.systemupdater;
 
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
 import android.content.Context;
+import android.content.Intent;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Handler;
@@ -44,10 +50,14 @@
 
 /** Display update state and progress. */
 public class UpdateLayoutFragment extends Fragment {
+    public static final String EXTRA_RESUME_UPDATE = "resume_update";
+
     private static final String TAG = "UpdateLayoutFragment";
     private static final String EXTRA_UPDATE_FILE = "extra_update_file";
     private static final int PERCENT_MAX = 100;
     private static final String REBOOT_REASON = "reboot-ab-update";
+    private static final String NOTIFICATION_CHANNEL_ID = "update";
+    private static final int NOTIFICATION_ID = 1;
 
     private ProgressBar mProgressBar;
     private TextView mContentTitle;
@@ -56,12 +66,14 @@
     private File mUpdateFile;
     private Button mSystemUpdateToolbarAction;
     private PowerManager mPowerManager;
+    private NotificationManager mNotificationManager;
     private final UpdateVerifier mPackageVerifier = new UpdateVerifier();
     private final UpdateEngine mUpdateEngine = new UpdateEngine();
+    private boolean mInstallationInProgress = false;
 
     private final CarUpdateEngineCallback mCarUpdateEngineCallback = new CarUpdateEngineCallback();
 
-    /** Create a {@link DeviceListFragment}. */
+    /** Create a {@link UpdateLayoutFragment}. */
     public static UpdateLayoutFragment getInstance(File file) {
         UpdateLayoutFragment fragment = new UpdateLayoutFragment();
         Bundle bundle = new Bundle();
@@ -70,12 +82,30 @@
         return fragment;
     }
 
+    /** Create a {@link UpdateLayoutFragment} showing an update in progress. */
+    public static UpdateLayoutFragment newResumedInstance() {
+        UpdateLayoutFragment fragment = new UpdateLayoutFragment();
+        Bundle bundle = new Bundle();
+        bundle.putBoolean(EXTRA_RESUME_UPDATE, true);
+        fragment.setArguments(bundle);
+        return fragment;
+    }
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        mUpdateFile = new File(getArguments().getString(EXTRA_UPDATE_FILE));
+        if (!getArguments().getBoolean(EXTRA_RESUME_UPDATE)) {
+            mUpdateFile = new File(getArguments().getString(EXTRA_UPDATE_FILE));
+        }
         mPowerManager = (PowerManager) getContext().getSystemService(Context.POWER_SERVICE);
+        mNotificationManager =
+                (NotificationManager) getContext().getSystemService(NotificationManager.class);
+        mNotificationManager.createNotificationChannel(
+                new NotificationChannel(
+                        NOTIFICATION_CHANNEL_ID,
+                        getContext().getString(R.id.system_update_auto_content_title),
+                        NotificationManager.IMPORTANCE_DEFAULT));
     }
 
     @Override
@@ -111,7 +141,13 @@
         mProgressBar.setVisibility(View.VISIBLE);
         showStatus(R.string.verify_in_progress);
 
-        mPackageVerifier.execute(mUpdateFile);
+        if (getArguments().getBoolean(EXTRA_RESUME_UPDATE)) {
+            // Rejoin the update already in progress.
+            showInstallationInProgress();
+        } else {
+            // Extract the necessary information and begin the update.
+            mPackageVerifier.execute(mUpdateFile);
+        }
     }
 
     @Override
@@ -125,6 +161,9 @@
     /** Update the status information. */
     private void showStatus(@StringRes int status) {
         mContentTitle.setText(status);
+        if (mInstallationInProgress) {
+            mNotificationManager.notify(NOTIFICATION_ID, createNotification(getContext(), status));
+        }
     }
 
     /** Show the install now button. */
@@ -150,17 +189,21 @@
 
     /** Attempt to install the update that is copied to the device. */
     private void installUpdate(UpdateParser.ParsedUpdate parsedUpdate) {
+        showInstallationInProgress();
+        mUpdateEngine.applyPayload(
+                parsedUpdate.mUrl, parsedUpdate.mOffset, parsedUpdate.mSize, parsedUpdate.mProps);
+    }
+
+    /** Set the layout to show installation progress. */
+    private void showInstallationInProgress() {
+        mInstallationInProgress = true;
         mProgressBar.setIndeterminate(false);
         mProgressBar.setVisibility(View.VISIBLE);
         mProgressBar.setMax(PERCENT_MAX);
         mSystemUpdateToolbarAction.setVisibility(View.GONE);
         showStatus(R.string.install_in_progress);
 
-        mUpdateEngine.bind(mCarUpdateEngineCallback,
-                new Handler(getContext().getMainLooper()));
-        mUpdateEngine.applyPayload(
-                parsedUpdate.mUrl, parsedUpdate.mOffset, parsedUpdate.mSize, parsedUpdate.mProps);
-
+        mUpdateEngine.bind(mCarUpdateEngineCallback, new Handler(getContext().getMainLooper()));
     }
 
     /** Attempt to verify the update and extract information needed for installation. */
@@ -228,4 +271,27 @@
             mSystemUpdateToolbarAction.setVisibility(View.GONE);
         }
     }
+
+    /** Build a notification to show the installation status. */
+    private static Notification createNotification(Context context, @StringRes int contents) {
+        Intent intent = new Intent();
+        intent.setComponent(new ComponentName(context, SystemUpdaterActivity.class));
+        intent.putExtra(EXTRA_RESUME_UPDATE, true);
+        PendingIntent pendingIntent =
+                PendingIntent.getActivity(
+                        context,
+                        /* requestCode= */ 0,
+                        intent,
+                        PendingIntent.FLAG_UPDATE_CURRENT);
+
+        return new Notification.Builder(context, NOTIFICATION_CHANNEL_ID)
+                .setVisibility(Notification.VISIBILITY_PUBLIC)
+                .setContentTitle(context.getString(contents))
+                .setSmallIcon(R.drawable.ic_system_update_alt_black_48dp)
+                .setContentIntent(pendingIntent)
+                .setShowWhen(false)
+                .setOngoing(true)
+                .setAutoCancel(false)
+                .build();
+    }
 }
