diff options
| author | 2019-03-27 19:41:11 +0000 | |
|---|---|---|
| committer | 2019-03-27 19:41:11 +0000 | |
| commit | 005984015c54064daf3db0018fbbafcc04d5e9ff (patch) | |
| tree | 334684f98c8151b59ca5b53d9e0aadecbf02109b | |
| parent | 5da81d68c8db956c9ca0e83ef97d759c41cdd7e0 (diff) | |
| parent | bfbe71e1044fa3d49834bf25a34c3d8b3b4bf7b8 (diff) | |
Merge "Minor fixes to IntervalStats"
4 files changed, 28 insertions, 7 deletions
diff --git a/core/java/android/app/usage/EventList.java b/core/java/android/app/usage/EventList.java index aaae57e526a0..8c0340585573 100644 --- a/core/java/android/app/usage/EventList.java +++ b/core/java/android/app/usage/EventList.java @@ -103,4 +103,18 @@ public class EventList { } return result; } + + /** + * Merge the {@link UsageEvents.Event events} in the given {@link EventList list} into this + * list while keeping the list sorted based on the event {@link + * UsageEvents.Event#mTimeStamp timestamps}. + * + * @param events The event list to merge + */ + public void merge(EventList events) { + final int size = events.size(); + for (int i = 0; i < size; i++) { + insert(events.get(i)); + } + } } diff --git a/services/usage/java/com/android/server/usage/IntervalStats.java b/services/usage/java/com/android/server/usage/IntervalStats.java index 8feed7fdb785..a783a4007da1 100644 --- a/services/usage/java/com/android/server/usage/IntervalStats.java +++ b/services/usage/java/com/android/server/usage/IntervalStats.java @@ -66,7 +66,7 @@ public class IntervalStats { public final ArrayMap<String, UsageStats> packageStats = new ArrayMap<>(); public final ArrayMap<Configuration, ConfigurationStats> configurations = new ArrayMap<>(); public Configuration activeConfiguration; - public EventList events = new EventList(); + public final EventList events = new EventList(); // A string cache. This is important as when we're parsing XML files, we don't want to // keep hundreds of strings that have the same contents. We will read the string @@ -82,7 +82,7 @@ public class IntervalStats { public void commitTime(long timeStamp) { if (curStartTime != 0) { - duration += timeStamp - duration; + duration += timeStamp - curStartTime; curStartTime = 0; } } @@ -305,7 +305,9 @@ public class IntervalStats { UsageStats usageStats = getOrCreateUsageStats(packageName); usageStats.update(className, timeStamp, eventType, instanceId); } - endTime = timeStamp; + if (timeStamp > endTime) { + endTime = timeStamp; + } } /** @@ -328,6 +330,9 @@ public class IntervalStats { event.mNotificationChannelId = getCachedStringRef(event.mNotificationChannelId); } events.insert(event); + if (event.mTimeStamp > endTime) { + endTime = event.mTimeStamp; + } } void updateChooserCounts(String packageName, String category, String action) { @@ -360,8 +365,9 @@ public class IntervalStats { configStats.mActivationCount += 1; activeConfiguration = configStats.mConfiguration; } - - endTime = timeStamp; + if (timeStamp > endTime) { + endTime = timeStamp; + } } void incrementAppLaunchCount(String packageName) { diff --git a/services/usage/java/com/android/server/usage/UsageStatsDatabase.java b/services/usage/java/com/android/server/usage/UsageStatsDatabase.java index 485a79d63862..c55bb3cf0ffe 100644 --- a/services/usage/java/com/android/server/usage/UsageStatsDatabase.java +++ b/services/usage/java/com/android/server/usage/UsageStatsDatabase.java @@ -1166,7 +1166,8 @@ public class UsageStatsDatabase { if (beingRestored == null) return null; beingRestored.activeConfiguration = onDevice.activeConfiguration; beingRestored.configurations.putAll(onDevice.configurations); - beingRestored.events = onDevice.events; + beingRestored.events.clear(); + beingRestored.events.merge(onDevice.events); return beingRestored; } diff --git a/services/usage/java/com/android/server/usage/UserUsageStatsService.java b/services/usage/java/com/android/server/usage/UserUsageStatsService.java index 9498e161ff61..26bfcc944400 100644 --- a/services/usage/java/com/android/server/usage/UserUsageStatsService.java +++ b/services/usage/java/com/android/server/usage/UserUsageStatsService.java @@ -334,7 +334,7 @@ class UserUsageStatsService { final IntervalStats diskStats = mDatabase.getLatestUsageStats( INTERVAL_DAILY); StringBuilder sb = new StringBuilder(256); - sb.append("Last 24 hours of UsageStats missing! timeRange : "); + sb.append("Recent UsageStats missing! timeRange : "); sb.append(beginTime); sb.append(", "); sb.append(endTime); |