diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 66746cb6ada29123469968221043259bfbc4b5c4..44dffa44e51baf1fcc1584d767cd1f6a573cf8f5 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -731,6 +731,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
         unregisterReceiver(mDictionaryPackInstallReceiver);
         unregisterReceiver(mDictionaryDumpBroadcastReceiver);
         mStatsUtilsManager.onDestroy();
+        DictionaryDecayBroadcastReciever.cancelIntervalAlarmForDictionaryDecaying(this);
         super.onDestroy();
     }
 
diff --git a/java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java b/java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java
index 221bb9a8f9af73d46445a0fc69a8f68ec6c1cbad..e974f3320563055f845dfd2e2b3c2be2a159569b 100644
--- a/java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java
+++ b/java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java
@@ -43,17 +43,40 @@ public class DictionaryDecayBroadcastReciever extends BroadcastReceiver {
     /**
      * Interval to update for decaying dictionaries.
      */
-    /* package */ static final long DICTIONARY_DECAY_INTERVAL = TimeUnit.MINUTES.toMillis(60);
+    static final long DICTIONARY_DECAY_INTERVAL_IN_MILLIS = TimeUnit.MINUTES.toMillis(60);
 
-    public static void setUpIntervalAlarmForDictionaryDecaying(Context context) {
-        AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
+    private static PendingIntent getPendingIntentForDictionaryDecay(final Context context) {
         final Intent updateIntent = new Intent(DICTIONARY_DECAY_INTENT_ACTION);
         updateIntent.setClass(context, DictionaryDecayBroadcastReciever.class);
-        final long alarmTime =  System.currentTimeMillis() + DICTIONARY_DECAY_INTERVAL;
-        final PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0 /* requestCode */,
+        return PendingIntent.getBroadcast(context, 0 /* requestCode */,
                 updateIntent, PendingIntent.FLAG_CANCEL_CURRENT);
-        if (null != alarmManager) alarmManager.setInexactRepeating(AlarmManager.RTC,
-                alarmTime, DICTIONARY_DECAY_INTERVAL, pendingIntent);
+    }
+
+    /**
+     * Set up interval alarm for dynamic dictionaries.
+     */
+    public static void setUpIntervalAlarmForDictionaryDecaying(final Context context) {
+        final AlarmManager alarmManager =
+                (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
+        if (null == alarmManager) {
+            return;
+        }
+        final long alarmTriggerTimeInMillis =
+                System.currentTimeMillis() + DICTIONARY_DECAY_INTERVAL_IN_MILLIS;
+        alarmManager.setInexactRepeating(AlarmManager.RTC, alarmTriggerTimeInMillis,
+                DICTIONARY_DECAY_INTERVAL_IN_MILLIS, getPendingIntentForDictionaryDecay(context));
+    }
+
+    /**
+     * Cancel interval alarm that has been set up.
+     */
+    public static void cancelIntervalAlarmForDictionaryDecaying(final Context context) {
+        final AlarmManager alarmManager =
+                (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
+        if (null == alarmManager) {
+            return;
+        }
+        alarmManager.cancel(getPendingIntentForDictionaryDecay(context));
     }
 
     @Override
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
index 8c5eb0aa73c7cd07ddcb6db779359a7c21d23831..74196dd6d78b65ed1c84ea4f6441b0ec2eda0a03 100644
--- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
+++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
@@ -74,7 +74,7 @@ public class PersonalizationHelper {
     private static int sCurrentTimestampForTesting = 0;
     public static void currentTimeChangedForTesting(final int currentTimestamp) {
         if (TimeUnit.MILLISECONDS.toSeconds(
-                DictionaryDecayBroadcastReciever.DICTIONARY_DECAY_INTERVAL)
+                DictionaryDecayBroadcastReciever.DICTIONARY_DECAY_INTERVAL_IN_MILLIS)
                         < currentTimestamp - sCurrentTimestampForTesting) {
             runGCOnAllOpenedUserHistoryDictionaries();
             runGCOnAllOpenedPersonalizationDictionaries();