summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/tests/servicestests/src/com/android/server/usage/AppIdleHistoryTests.java2
-rw-r--r--services/usage/java/com/android/server/usage/AppIdleHistory.java3
-rw-r--r--services/usage/java/com/android/server/usage/UsageStatsService.java10
3 files changed, 7 insertions, 8 deletions
diff --git a/services/tests/servicestests/src/com/android/server/usage/AppIdleHistoryTests.java b/services/tests/servicestests/src/com/android/server/usage/AppIdleHistoryTests.java
index 9ccb1a618568..0bd014c874b5 100644
--- a/services/tests/servicestests/src/com/android/server/usage/AppIdleHistoryTests.java
+++ b/services/tests/servicestests/src/com/android/server/usage/AppIdleHistoryTests.java
@@ -67,7 +67,7 @@ public class AppIdleHistoryTests extends AndroidTestCase {
// Screen on time should not keep progressing with screen is off
assertEquals(aih.getScreenOnTimeLocked(7000), 3000);
assertEquals(aih.getScreenOnTimeLocked(8000), 3000);
- aih.writeElapsedTimeLocked();
+ aih.writeAppIdleDurationsLocked();
// Check if the screen on time is persisted across instantiations
AppIdleHistory aih2 = new AppIdleHistory(mStorageDir, 0);
diff --git a/services/usage/java/com/android/server/usage/AppIdleHistory.java b/services/usage/java/com/android/server/usage/AppIdleHistory.java
index a3313c9741cd..f69dae44a316 100644
--- a/services/usage/java/com/android/server/usage/AppIdleHistory.java
+++ b/services/usage/java/com/android/server/usage/AppIdleHistory.java
@@ -118,7 +118,6 @@ public class AppIdleHistory {
} else {
mScreenOnDuration += elapsedRealtime - mScreenOnSnapshot;
mElapsedDuration += elapsedRealtime - mElapsedSnapshot;
- writeScreenOnTimeLocked();
mElapsedSnapshot = elapsedRealtime;
}
}
@@ -167,7 +166,7 @@ public class AppIdleHistory {
/**
* To be called periodically to keep track of elapsed time when app idle times are written
*/
- public void writeElapsedTimeLocked() {
+ public void writeAppIdleDurationsLocked() {
final long elapsedRealtime = SystemClock.elapsedRealtime();
// Only bump up and snapshot the elapsed time. Don't change screen on duration.
mElapsedDuration += elapsedRealtime - mElapsedSnapshot;
diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java
index 69cf1a2c5362..828477302245 100644
--- a/services/usage/java/com/android/server/usage/UsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UsageStatsService.java
@@ -304,9 +304,9 @@ public class UsageStatsService extends SystemService implements
@Override public void onDisplayChanged(int displayId) {
if (displayId == Display.DEFAULT_DISPLAY) {
+ final boolean displayOn = isDisplayOn();
synchronized (UsageStatsService.this.mLock) {
- mAppIdleHistory.updateDisplayLocked(isDisplayOn(),
- SystemClock.elapsedRealtime());
+ mAppIdleHistory.updateDisplayLocked(displayOn, SystemClock.elapsedRealtime());
}
}
}
@@ -1005,9 +1005,9 @@ public class UsageStatsService extends SystemService implements
service.persistActiveStats();
mAppIdleHistory.writeAppIdleTimesLocked(mUserState.keyAt(i));
}
- // Persist elapsed time periodically, in case screen doesn't get toggled
- // until the next boot
- mAppIdleHistory.writeElapsedTimeLocked();
+ // Persist elapsed and screen on time. If this fails for whatever reason, the apps will be
+ // considered not-idle, which is the safest outcome in such an event.
+ mAppIdleHistory.writeAppIdleDurationsLocked();
mHandler.removeMessages(MSG_FLUSH_TO_DISK);
}