summaryrefslogtreecommitdiffstats
path: root/core/java/android
diff options
context:
space:
mode:
authorAdam Lesinski <adamlesinski@google.com>2016-01-26 18:18:19 -0800
committerThe Android Automerger <android-build@google.com>2016-02-24 13:21:13 -0800
commita94ceffd7bfeaae23cf2474e9a05a17a20e25607 (patch)
tree96e58b62f0104ea0bf66546d86d1d71b54da0dfd /core/java/android
parent2dbd40c007eaef20edd92856cf8c1652b926c77e (diff)
downloadframeworks_base-a94ceffd7bfeaae23cf2474e9a05a17a20e25607.zip
frameworks_base-a94ceffd7bfeaae23cf2474e9a05a17a20e25607.tar.gz
frameworks_base-a94ceffd7bfeaae23cf2474e9a05a17a20e25607.tar.bz2
DO NOT MERGE ANYWHERE: Don't change screen on time on time changes
Screen on time should be measured in elapsed realtime, not wallclock. Cause a checkIdleStates to occur when reloading stats (on rollover and on time change). When time changes occur in the negative direction, the new stats file we create can overlap the previous one with regards to its end timestamp. Use the begin timestamp to determine which of the latest stats to merge. (b/22716352) Bug: 26488100 Change-Id: If31b29bbbee9e98401205b5e26bce86e181286e7
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/app/usage/UsageStats.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/core/java/android/app/usage/UsageStats.java b/core/java/android/app/usage/UsageStats.java
index 0fce4e2..a88aa31 100644
--- a/core/java/android/app/usage/UsageStats.java
+++ b/core/java/android/app/usage/UsageStats.java
@@ -165,14 +165,18 @@ public final class UsageStats implements Parcelable {
mPackageName + "' with UsageStats for package '" + right.mPackageName + "'.");
}
- if (right.mEndTimeStamp > mEndTimeStamp) {
+ if (right.mBeginTimeStamp > mBeginTimeStamp) {
+ // The incoming UsageStat begins after this one, so use its last time used fields
+ // as the source of truth.
+ // We use the mBeginTimeStamp due to a bug where UsageStats files can overlap with
+ // regards to their mEndTimeStamp.
mLastEvent = right.mLastEvent;
- mEndTimeStamp = right.mEndTimeStamp;
mLastTimeUsed = right.mLastTimeUsed;
mBeginIdleTime = right.mBeginIdleTime;
mLastTimeSystemUsed = right.mLastTimeSystemUsed;
}
mBeginTimeStamp = Math.min(mBeginTimeStamp, right.mBeginTimeStamp);
+ mEndTimeStamp = Math.max(mEndTimeStamp, right.mEndTimeStamp);
mTotalTimeInForeground += right.mTotalTimeInForeground;
mLaunchCount += right.mLaunchCount;
}