diff options
| author | Dmitri Plotnikov <dplotnikov@google.com> | 2021-05-20 15:32:19 -0700 |
|---|---|---|
| committer | Dmitri Plotnikov <dplotnikov@google.com> | 2021-05-20 18:56:46 -0700 |
| commit | a00309cdc2b8a42e5bcb7a67987718542ce62e60 (patch) | |
| tree | a39cd151b84afe54e17a7a14996afb0f681ef8b6 /core/java | |
| parent | 186fbcc208eb306a4e6461e360b133b0fc4cf0ab (diff) | |
Fix time-in-foreground to include PROCESS_STATE_FOREGROUND_SERVICE
Bug: 188656360
Test: atest FrameworksCoreTests:BatteryUsageStatsProviderTest
Change-Id: I29312fb36e13181a57c68bb9968b103256f14077
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/com/android/internal/os/BatteryUsageStatsProvider.java | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/core/java/com/android/internal/os/BatteryUsageStatsProvider.java b/core/java/com/android/internal/os/BatteryUsageStatsProvider.java index d4d61256a7a3..3aaccdd71844 100644 --- a/core/java/com/android/internal/os/BatteryUsageStatsProvider.java +++ b/core/java/com/android/internal/os/BatteryUsageStatsProvider.java @@ -180,29 +180,28 @@ public class BatteryUsageStatsProvider { } private long getProcessForegroundTimeMs(BatteryStats.Uid uid, long realtimeUs) { - final long topStateDurationMs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_TOP, - realtimeUs, BatteryStats.STATS_SINCE_CHARGED) / 1000; - - long foregroundActivityDurationMs = 0; + final long topStateDurationUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_TOP, + realtimeUs, BatteryStats.STATS_SINCE_CHARGED); + long foregroundActivityDurationUs = 0; final BatteryStats.Timer foregroundActivityTimer = uid.getForegroundActivityTimer(); if (foregroundActivityTimer != null) { - foregroundActivityDurationMs = foregroundActivityTimer.getTotalTimeLocked(realtimeUs, - BatteryStats.STATS_SINCE_CHARGED) / 1000; + foregroundActivityDurationUs = foregroundActivityTimer.getTotalTimeLocked(realtimeUs, + BatteryStats.STATS_SINCE_CHARGED); } // Use the min value of STATE_TOP time and foreground activity time, since both of these // times are imprecise - final long foregroundDurationMs = Math.min(topStateDurationMs, - foregroundActivityDurationMs); - - long foregroundServiceDurationMs = 0; - final BatteryStats.Timer foregroundServiceTimer = uid.getForegroundServiceTimer(); - if (foregroundServiceTimer != null) { - foregroundServiceDurationMs = foregroundServiceTimer.getTotalTimeLocked(realtimeUs, - BatteryStats.STATS_SINCE_CHARGED) / 1000; - } + long totalForegroundDurationUs = Math.min(topStateDurationUs, foregroundActivityDurationUs); + + totalForegroundDurationUs += uid.getProcessStateTime( + BatteryStats.Uid.PROCESS_STATE_FOREGROUND, realtimeUs, + BatteryStats.STATS_SINCE_CHARGED); + + totalForegroundDurationUs += uid.getProcessStateTime( + BatteryStats.Uid.PROCESS_STATE_FOREGROUND_SERVICE, realtimeUs, + BatteryStats.STATS_SINCE_CHARGED); - return foregroundDurationMs + foregroundServiceDurationMs; + return totalForegroundDurationUs / 1000; } private long getProcessBackgroundTimeMs(BatteryStats.Uid uid, long realtimeUs) { |
