Cancel interval alarm for dictionary decaying in onDestroy.
Bug: 18528171 Change-Id: I6e12c006bd9eff15f3fa9cfd335bdd9fa081be61
This commit is contained in:
parent
20da4f07be
commit
47ae0c3af4
3 changed files with 32 additions and 8 deletions
|
@ -730,6 +730,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||
unregisterReceiver(mDictionaryPackInstallReceiver);
|
||||
unregisterReceiver(mDictionaryDumpBroadcastReceiver);
|
||||
mStatsUtilsManager.onDestroy();
|
||||
DictionaryDecayBroadcastReciever.cancelIntervalAlarmForDictionaryDecaying(this);
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in a new issue