Merge "Fix time-in-foreground to include PROCESS_STATE_FOREGROUND_SERVICE" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
4113199752
@@ -180,29 +180,28 @@ public class BatteryUsageStatsProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private long getProcessForegroundTimeMs(BatteryStats.Uid uid, long realtimeUs) {
|
private long getProcessForegroundTimeMs(BatteryStats.Uid uid, long realtimeUs) {
|
||||||
final long topStateDurationMs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_TOP,
|
final long topStateDurationUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_TOP,
|
||||||
realtimeUs, BatteryStats.STATS_SINCE_CHARGED) / 1000;
|
realtimeUs, BatteryStats.STATS_SINCE_CHARGED);
|
||||||
|
long foregroundActivityDurationUs = 0;
|
||||||
long foregroundActivityDurationMs = 0;
|
|
||||||
final BatteryStats.Timer foregroundActivityTimer = uid.getForegroundActivityTimer();
|
final BatteryStats.Timer foregroundActivityTimer = uid.getForegroundActivityTimer();
|
||||||
if (foregroundActivityTimer != null) {
|
if (foregroundActivityTimer != null) {
|
||||||
foregroundActivityDurationMs = foregroundActivityTimer.getTotalTimeLocked(realtimeUs,
|
foregroundActivityDurationUs = foregroundActivityTimer.getTotalTimeLocked(realtimeUs,
|
||||||
BatteryStats.STATS_SINCE_CHARGED) / 1000;
|
BatteryStats.STATS_SINCE_CHARGED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use the min value of STATE_TOP time and foreground activity time, since both of these
|
// Use the min value of STATE_TOP time and foreground activity time, since both of these
|
||||||
// times are imprecise
|
// times are imprecise
|
||||||
final long foregroundDurationMs = Math.min(topStateDurationMs,
|
long totalForegroundDurationUs = Math.min(topStateDurationUs, foregroundActivityDurationUs);
|
||||||
foregroundActivityDurationMs);
|
|
||||||
|
|
||||||
long foregroundServiceDurationMs = 0;
|
totalForegroundDurationUs += uid.getProcessStateTime(
|
||||||
final BatteryStats.Timer foregroundServiceTimer = uid.getForegroundServiceTimer();
|
BatteryStats.Uid.PROCESS_STATE_FOREGROUND, realtimeUs,
|
||||||
if (foregroundServiceTimer != null) {
|
BatteryStats.STATS_SINCE_CHARGED);
|
||||||
foregroundServiceDurationMs = foregroundServiceTimer.getTotalTimeLocked(realtimeUs,
|
|
||||||
BatteryStats.STATS_SINCE_CHARGED) / 1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
return foregroundDurationMs + foregroundServiceDurationMs;
|
totalForegroundDurationUs += uid.getProcessStateTime(
|
||||||
|
BatteryStats.Uid.PROCESS_STATE_FOREGROUND_SERVICE, realtimeUs,
|
||||||
|
BatteryStats.STATS_SINCE_CHARGED);
|
||||||
|
|
||||||
|
return totalForegroundDurationUs / 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
private long getProcessBackgroundTimeMs(BatteryStats.Uid uid, long realtimeUs) {
|
private long getProcessBackgroundTimeMs(BatteryStats.Uid uid, long realtimeUs) {
|
||||||
|
|||||||
@@ -59,8 +59,14 @@ public class BatteryUsageStatsProviderTest {
|
|||||||
30 * MINUTE_IN_MS, 30 * MINUTE_IN_MS);
|
30 * MINUTE_IN_MS, 30 * MINUTE_IN_MS);
|
||||||
batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_SERVICE,
|
batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_SERVICE,
|
||||||
30 * MINUTE_IN_MS, 30 * MINUTE_IN_MS);
|
30 * MINUTE_IN_MS, 30 * MINUTE_IN_MS);
|
||||||
batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_CACHED_EMPTY,
|
batteryStats.noteUidProcessStateLocked(APP_UID,
|
||||||
|
ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE,
|
||||||
40 * MINUTE_IN_MS, 40 * MINUTE_IN_MS);
|
40 * MINUTE_IN_MS, 40 * MINUTE_IN_MS);
|
||||||
|
batteryStats.noteUidProcessStateLocked(APP_UID,
|
||||||
|
ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE,
|
||||||
|
50 * MINUTE_IN_MS, 50 * MINUTE_IN_MS);
|
||||||
|
batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_CACHED_EMPTY,
|
||||||
|
80 * MINUTE_IN_MS, 80 * MINUTE_IN_MS);
|
||||||
|
|
||||||
mStatsRule.setCurrentTime(54321);
|
mStatsRule.setCurrentTime(54321);
|
||||||
|
|
||||||
@@ -74,7 +80,7 @@ public class BatteryUsageStatsProviderTest {
|
|||||||
batteryUsageStats.getUidBatteryConsumers();
|
batteryUsageStats.getUidBatteryConsumers();
|
||||||
final UidBatteryConsumer uidBatteryConsumer = uidBatteryConsumers.get(0);
|
final UidBatteryConsumer uidBatteryConsumer = uidBatteryConsumers.get(0);
|
||||||
assertThat(uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_FOREGROUND))
|
assertThat(uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_FOREGROUND))
|
||||||
.isEqualTo(20 * MINUTE_IN_MS);
|
.isEqualTo(60 * MINUTE_IN_MS);
|
||||||
assertThat(uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_BACKGROUND))
|
assertThat(uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_BACKGROUND))
|
||||||
.isEqualTo(10 * MINUTE_IN_MS);
|
.isEqualTo(10 * MINUTE_IN_MS);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user