diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index ff3252b..02c46f6 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -35,7 +35,11 @@
         <service android:name=".controller.UpdaterService" />
         <service android:name=".ExportUpdateService" />
 
-        <receiver android:name=".UpdaterReceiver" android:exported="false" />
+        <receiver android:name=".UpdaterReceiver" android:exported="false">
+            <intent-filter>
+                <action android:name="android.intent.action.BOOT_COMPLETED"/>
+            </intent-filter>
+        </receiver>
 
         <receiver android:name=".UpdatesCheckReceiver">
             <intent-filter>
diff --git a/src/org/lineageos/updater/UpdaterReceiver.java b/src/org/lineageos/updater/UpdaterReceiver.java
index 7bdaa4c..ca09914 100644
--- a/src/org/lineageos/updater/UpdaterReceiver.java
+++ b/src/org/lineageos/updater/UpdaterReceiver.java
@@ -18,7 +18,11 @@
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+import android.content.SharedPreferences;
 import android.os.PowerManager;
+import android.support.v7.preference.PreferenceManager;
+
+import org.lineageos.updater.misc.Constants;
 
 public class UpdaterReceiver extends BroadcastReceiver {
 
@@ -30,6 +34,9 @@
         if (ACTION_INSTALL_REBOOT.equals(intent.getAction())) {
             PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
             pm.reboot(null);
+        } else if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
+            SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
+            pref.edit().remove(Constants.PREF_NEEDS_REBOOT).apply();
         }
     }
 }
diff --git a/src/org/lineageos/updater/controller/ABUpdateInstaller.java b/src/org/lineageos/updater/controller/ABUpdateInstaller.java
index c5d43f0..6eb91ef 100644
--- a/src/org/lineageos/updater/controller/ABUpdateInstaller.java
+++ b/src/org/lineageos/updater/controller/ABUpdateInstaller.java
@@ -42,7 +42,6 @@
     private static final String TAG = "ABUpdateInstaller";
 
     private static final String PREF_INSTALLING_AB_ID = "installing_ab_id";
-    private static final String PREF_NEEDS_REBOOT = "needs_reboot";
 
     private static ABUpdateInstaller sInstance = null;
 
@@ -119,13 +118,13 @@
     static synchronized boolean isInstallingUpdate(Context context) {
         SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
         return pref.getString(ABUpdateInstaller.PREF_INSTALLING_AB_ID, null) != null ||
-                pref.getBoolean(ABUpdateInstaller.PREF_NEEDS_REBOOT, false);
+                pref.getBoolean(Constants.PREF_NEEDS_REBOOT, false);
     }
 
     static synchronized boolean isInstallingUpdate(Context context, String downloadId) {
         SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
         return downloadId.equals(pref.getString(ABUpdateInstaller.PREF_INSTALLING_AB_ID, null)) ||
-                pref.getBoolean(ABUpdateInstaller.PREF_NEEDS_REBOOT, false);
+                pref.getBoolean(Constants.PREF_NEEDS_REBOOT, false);
     }
 
     private ABUpdateInstaller(Context context, UpdaterController updaterController) {
@@ -233,7 +232,7 @@
 
     private void installationDone(boolean needsReboot) {
         PreferenceManager.getDefaultSharedPreferences(mContext).edit()
-                .putBoolean(PREF_NEEDS_REBOOT, needsReboot)
+                .putBoolean(Constants.PREF_NEEDS_REBOOT, needsReboot)
                 .remove(PREF_INSTALLING_AB_ID)
                 .apply();
     }
diff --git a/src/org/lineageos/updater/misc/Constants.java b/src/org/lineageos/updater/misc/Constants.java
index 93dac4a..b5764ef 100644
--- a/src/org/lineageos/updater/misc/Constants.java
+++ b/src/org/lineageos/updater/misc/Constants.java
@@ -27,6 +27,7 @@
     public static final String PREF_AUTO_UPDATES_CHECK = "auto_updates_check";
     public static final String PREF_AUTO_DELETE_UPDATES = "auto_delete_updates";
     public static final String PREF_MOBILE_DATA_WARNING = "pref_mobile_data_warning";
+    public static final String PREF_NEEDS_REBOOT = "needs_reboot";
 
     public static final String UNCRYPT_FILE_EXT = ".uncrypt";
 
