AppIdleHistory: Only write screen on durations during regular sync
am: f2d87eba75
Change-Id: I7e5a6d89afa813fdb68c68d201ad04971641dabd
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user