/** * Ensures the model is in a consistent state which is the activities for the current intent have * been loaded, the most recent history has been read, and the activities are sorted. */ private void ensureConsistentState() { boolean stateChanged = loadActivitiesIfNeeded(); stateChanged |= readHistoricalDataIfNeeded(); pruneExcessiveHistoricalRecordsIfNeeded(); if (stateChanged) { sortActivitiesIfNeeded(); notifyChanged(); } }
/** * Adds a historical record. * * @param historicalRecord The record to add. * @return True if the record was added. */ private boolean addHistoricalRecord(HistoricalRecord historicalRecord) { final boolean added = mHistoricalRecords.add(historicalRecord); if (added) { mHistoricalRecordsChanged = true; pruneExcessiveHistoricalRecordsIfNeeded(); persistHistoricalDataIfNeeded(); sortActivitiesIfNeeded(); notifyChanged(); } return added; }
/** * Sets the maximal size of the historical data. Defaults to {@link #DEFAULT_HISTORY_MAX_LENGTH} * * <p><strong>Note:</strong> Setting this property will immediately enforce the specified max * history size by dropping enough old historical records to enforce the desired size. Thus, any * records that exceed the history size will be discarded and irreversibly lost. * * @param historyMaxSize The max history size. */ public void setHistoryMaxSize(int historyMaxSize) { synchronized (mInstanceLock) { if (mHistoryMaxSize == historyMaxSize) { return; } mHistoryMaxSize = historyMaxSize; pruneExcessiveHistoricalRecordsIfNeeded(); if (sortActivitiesIfNeeded()) { notifyChanged(); } } }
/** * Removes all historical records for this pkg. * * @param historicalRecord The pkg to delete records for. * @return True if the record was added. */ boolean removeHistoricalRecordsForPackage(final String pkg) { boolean removed = false; for (Iterator<HistoricalRecord> i = mHistoricalRecords.iterator(); i.hasNext(); ) { final HistoricalRecord record = i.next(); if (record.activity.getPackageName().equals(pkg)) { i.remove(); removed = true; } } if (removed) { mHistoricalRecordsChanged = true; pruneExcessiveHistoricalRecordsIfNeeded(); persistHistoricalDataIfNeeded(); sortActivitiesIfNeeded(); notifyChanged(); } return removed; }