Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e79d504c authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by Android (Google) Code Review
Browse files

Merge "Cancel interval alarm for dictionary decaying in onDestroy."

parents d179e408 47ae0c3a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -731,6 +731,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
        unregisterReceiver(mDictionaryPackInstallReceiver);
        unregisterReceiver(mDictionaryDumpBroadcastReceiver);
        mStatsUtilsManager.onDestroy();
        DictionaryDecayBroadcastReciever.cancelIntervalAlarmForDictionaryDecaying(this);
        super.onDestroy();
    }

+30 −7
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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();