Loading core/java/android/os/BatteryStats.java +5 −2 Original line number Diff line number Diff line Loading @@ -650,8 +650,11 @@ public abstract class BatteryStats { return Uid.PROCESS_STATE_NONEXISTENT; } else if (procState == ActivityManager.PROCESS_STATE_TOP) { return Uid.PROCESS_STATE_TOP; } else if (ActivityManager.isForegroundService(procState)) { // State when app has put itself in the foreground. } else if (procState == ActivityManager.PROCESS_STATE_BOUND_TOP) { return Uid.PROCESS_STATE_BACKGROUND; } else if (procState == ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE) { return Uid.PROCESS_STATE_FOREGROUND_SERVICE; } else if (procState == ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE) { return Uid.PROCESS_STATE_FOREGROUND_SERVICE; } else if (procState <= ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND) { // Persistent and other foreground states go here. Loading core/java/android/os/UidBatteryConsumer.java +3 −3 Original line number Diff line number Diff line Loading @@ -50,8 +50,7 @@ public final class UidBatteryConsumer extends BatteryConsumer { } /** * The state of an application when it is either running a foreground (top) activity * or a foreground service. * The state of an application when it is either running a foreground (top) activity. */ public static final int STATE_FOREGROUND = 0; Loading @@ -63,7 +62,8 @@ public final class UidBatteryConsumer extends BatteryConsumer { * {@link android.app.ActivityManager#PROCESS_STATE_TRANSIENT_BACKGROUND}, * {@link android.app.ActivityManager#PROCESS_STATE_BACKUP}, * {@link android.app.ActivityManager#PROCESS_STATE_SERVICE}, * {@link android.app.ActivityManager#PROCESS_STATE_RECEIVER}. * {@link android.app.ActivityManager#PROCESS_STATE_RECEIVER}, * {@link android.app.ActivityManager#PROCESS_STATE_FOREGROUND_SERVICE}. */ public static final int STATE_BACKGROUND = 1; Loading services/core/java/com/android/server/power/stats/BatteryUsageStatsProvider.java +5 −6 Original line number Diff line number Diff line Loading @@ -286,16 +286,15 @@ public class BatteryUsageStatsProvider { 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 totalForegroundDurationUs / 1000; } private long getProcessBackgroundTimeMs(BatteryStats.Uid uid, long realtimeUs) { return uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_BACKGROUND, realtimeUs, BatteryStats.STATS_SINCE_CHARGED) / 1000; return (uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_BACKGROUND, realtimeUs, BatteryStats.STATS_SINCE_CHARGED) + uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_FOREGROUND_SERVICE, realtimeUs, BatteryStats.STATS_SINCE_CHARGED)) / 1000; } private BatteryUsageStats getAggregatedBatteryUsageStats(BatteryUsageStatsQuery query) { Loading services/tests/servicestests/src/com/android/server/power/stats/BatteryStatsNoteTest.java +6 −4 Original line number Diff line number Diff line Loading @@ -359,6 +359,7 @@ public class BatteryStatsNoteTest extends TestCase { // map of ActivityManager process states and how long to simulate run time in each state Map<Integer, Integer> stateRuntimeMap = new HashMap<Integer, Integer>(); stateRuntimeMap.put(ActivityManager.PROCESS_STATE_TOP, 1111); stateRuntimeMap.put(ActivityManager.PROCESS_STATE_BOUND_TOP, 7382); stateRuntimeMap.put(ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE, 1234); stateRuntimeMap.put(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, 2468); stateRuntimeMap.put(ActivityManager.PROCESS_STATE_TOP_SLEEPING, 7531); Loading Loading @@ -395,7 +396,8 @@ public class BatteryStatsNoteTest extends TestCase { actualRunTimeUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_FOREGROUND_SERVICE, elapsedTimeUs, STATS_SINCE_CHARGED); expectedRunTimeMs = stateRuntimeMap.get(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE); expectedRunTimeMs = stateRuntimeMap.get(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE) + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE); assertEquals(expectedRunTimeMs * 1000, actualRunTimeUs); actualRunTimeUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_TOP_SLEEPING, Loading @@ -405,8 +407,7 @@ public class BatteryStatsNoteTest extends TestCase { actualRunTimeUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_FOREGROUND, elapsedTimeUs, STATS_SINCE_CHARGED); expectedRunTimeMs = stateRuntimeMap.get(ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND) + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE); expectedRunTimeMs = stateRuntimeMap.get(ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND); assertEquals(expectedRunTimeMs * 1000, actualRunTimeUs); actualRunTimeUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_BACKGROUND, Loading @@ -414,7 +415,8 @@ public class BatteryStatsNoteTest extends TestCase { expectedRunTimeMs = stateRuntimeMap.get(ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND) + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_BACKUP) + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_SERVICE) + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_RECEIVER); + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_RECEIVER) + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_BOUND_TOP); assertEquals(expectedRunTimeMs * 1000, actualRunTimeUs); actualRunTimeUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_CACHED, Loading services/tests/servicestests/src/com/android/server/power/stats/BatteryUsageStatsProviderTest.java +22 −18 Original line number Diff line number Diff line Loading @@ -78,9 +78,9 @@ public class BatteryUsageStatsProviderTest { batteryUsageStats.getUidBatteryConsumers(); final UidBatteryConsumer uidBatteryConsumer = uidBatteryConsumers.get(0); assertThat(uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_FOREGROUND)) .isEqualTo(60 * MINUTE_IN_MS); .isEqualTo(20 * MINUTE_IN_MS); assertThat(uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_BACKGROUND)) .isEqualTo(10 * MINUTE_IN_MS); .isEqualTo(40 * MINUTE_IN_MS); assertThat(uidBatteryConsumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_AUDIO)) .isWithin(PRECISION).of(2.0); assertThat( Loading Loading @@ -121,40 +121,44 @@ public class BatteryUsageStatsProviderTest { private BatteryStatsImpl prepareBatteryStats() { BatteryStatsImpl batteryStats = mStatsRule.getBatteryStats(); mStatsRule.setTime(10 * MINUTE_IN_MS, 10 * MINUTE_IN_MS); synchronized (batteryStats) { batteryStats.noteActivityResumedLocked(APP_UID, 10 * MINUTE_IN_MS, 10 * MINUTE_IN_MS); batteryStats.noteActivityResumedLocked(APP_UID); } mStatsRule.setTime(10 * MINUTE_IN_MS, 10 * MINUTE_IN_MS); synchronized (batteryStats) { batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_TOP, 10 * MINUTE_IN_MS, 10 * MINUTE_IN_MS); batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_TOP); } mStatsRule.setTime(30 * MINUTE_IN_MS, 30 * MINUTE_IN_MS); synchronized (batteryStats) { batteryStats.noteActivityPausedLocked(APP_UID, 30 * MINUTE_IN_MS, 30 * MINUTE_IN_MS); batteryStats.noteActivityPausedLocked(APP_UID); } mStatsRule.setTime(30 * MINUTE_IN_MS, 30 * MINUTE_IN_MS); synchronized (batteryStats) { batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_SERVICE, 30 * MINUTE_IN_MS, 30 * MINUTE_IN_MS); ActivityManager.PROCESS_STATE_SERVICE); } mStatsRule.setTime(40 * MINUTE_IN_MS, 40 * MINUTE_IN_MS); synchronized (batteryStats) { batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, 40 * MINUTE_IN_MS, 40 * MINUTE_IN_MS); ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE); } mStatsRule.setTime(50 * MINUTE_IN_MS, 50 * MINUTE_IN_MS); synchronized (batteryStats) { batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE, 50 * MINUTE_IN_MS, 50 * MINUTE_IN_MS); ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE); } mStatsRule.setTime(60 * MINUTE_IN_MS, 60 * MINUTE_IN_MS); synchronized (batteryStats) { batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_CACHED_EMPTY, 80 * MINUTE_IN_MS, 80 * MINUTE_IN_MS); ActivityManager.PROCESS_STATE_BOUND_TOP); } mStatsRule.setTime(70 * MINUTE_IN_MS, 70 * MINUTE_IN_MS); synchronized (batteryStats) { batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_CACHED_EMPTY); } synchronized (batteryStats) { batteryStats.noteFlashlightOnLocked(APP_UID, 1000, 1000); } Loading Loading
core/java/android/os/BatteryStats.java +5 −2 Original line number Diff line number Diff line Loading @@ -650,8 +650,11 @@ public abstract class BatteryStats { return Uid.PROCESS_STATE_NONEXISTENT; } else if (procState == ActivityManager.PROCESS_STATE_TOP) { return Uid.PROCESS_STATE_TOP; } else if (ActivityManager.isForegroundService(procState)) { // State when app has put itself in the foreground. } else if (procState == ActivityManager.PROCESS_STATE_BOUND_TOP) { return Uid.PROCESS_STATE_BACKGROUND; } else if (procState == ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE) { return Uid.PROCESS_STATE_FOREGROUND_SERVICE; } else if (procState == ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE) { return Uid.PROCESS_STATE_FOREGROUND_SERVICE; } else if (procState <= ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND) { // Persistent and other foreground states go here. Loading
core/java/android/os/UidBatteryConsumer.java +3 −3 Original line number Diff line number Diff line Loading @@ -50,8 +50,7 @@ public final class UidBatteryConsumer extends BatteryConsumer { } /** * The state of an application when it is either running a foreground (top) activity * or a foreground service. * The state of an application when it is either running a foreground (top) activity. */ public static final int STATE_FOREGROUND = 0; Loading @@ -63,7 +62,8 @@ public final class UidBatteryConsumer extends BatteryConsumer { * {@link android.app.ActivityManager#PROCESS_STATE_TRANSIENT_BACKGROUND}, * {@link android.app.ActivityManager#PROCESS_STATE_BACKUP}, * {@link android.app.ActivityManager#PROCESS_STATE_SERVICE}, * {@link android.app.ActivityManager#PROCESS_STATE_RECEIVER}. * {@link android.app.ActivityManager#PROCESS_STATE_RECEIVER}, * {@link android.app.ActivityManager#PROCESS_STATE_FOREGROUND_SERVICE}. */ public static final int STATE_BACKGROUND = 1; Loading
services/core/java/com/android/server/power/stats/BatteryUsageStatsProvider.java +5 −6 Original line number Diff line number Diff line Loading @@ -286,16 +286,15 @@ public class BatteryUsageStatsProvider { 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 totalForegroundDurationUs / 1000; } private long getProcessBackgroundTimeMs(BatteryStats.Uid uid, long realtimeUs) { return uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_BACKGROUND, realtimeUs, BatteryStats.STATS_SINCE_CHARGED) / 1000; return (uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_BACKGROUND, realtimeUs, BatteryStats.STATS_SINCE_CHARGED) + uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_FOREGROUND_SERVICE, realtimeUs, BatteryStats.STATS_SINCE_CHARGED)) / 1000; } private BatteryUsageStats getAggregatedBatteryUsageStats(BatteryUsageStatsQuery query) { Loading
services/tests/servicestests/src/com/android/server/power/stats/BatteryStatsNoteTest.java +6 −4 Original line number Diff line number Diff line Loading @@ -359,6 +359,7 @@ public class BatteryStatsNoteTest extends TestCase { // map of ActivityManager process states and how long to simulate run time in each state Map<Integer, Integer> stateRuntimeMap = new HashMap<Integer, Integer>(); stateRuntimeMap.put(ActivityManager.PROCESS_STATE_TOP, 1111); stateRuntimeMap.put(ActivityManager.PROCESS_STATE_BOUND_TOP, 7382); stateRuntimeMap.put(ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE, 1234); stateRuntimeMap.put(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, 2468); stateRuntimeMap.put(ActivityManager.PROCESS_STATE_TOP_SLEEPING, 7531); Loading Loading @@ -395,7 +396,8 @@ public class BatteryStatsNoteTest extends TestCase { actualRunTimeUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_FOREGROUND_SERVICE, elapsedTimeUs, STATS_SINCE_CHARGED); expectedRunTimeMs = stateRuntimeMap.get(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE); expectedRunTimeMs = stateRuntimeMap.get(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE) + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE); assertEquals(expectedRunTimeMs * 1000, actualRunTimeUs); actualRunTimeUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_TOP_SLEEPING, Loading @@ -405,8 +407,7 @@ public class BatteryStatsNoteTest extends TestCase { actualRunTimeUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_FOREGROUND, elapsedTimeUs, STATS_SINCE_CHARGED); expectedRunTimeMs = stateRuntimeMap.get(ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND) + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE); expectedRunTimeMs = stateRuntimeMap.get(ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND); assertEquals(expectedRunTimeMs * 1000, actualRunTimeUs); actualRunTimeUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_BACKGROUND, Loading @@ -414,7 +415,8 @@ public class BatteryStatsNoteTest extends TestCase { expectedRunTimeMs = stateRuntimeMap.get(ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND) + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_BACKUP) + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_SERVICE) + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_RECEIVER); + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_RECEIVER) + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_BOUND_TOP); assertEquals(expectedRunTimeMs * 1000, actualRunTimeUs); actualRunTimeUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_CACHED, Loading
services/tests/servicestests/src/com/android/server/power/stats/BatteryUsageStatsProviderTest.java +22 −18 Original line number Diff line number Diff line Loading @@ -78,9 +78,9 @@ public class BatteryUsageStatsProviderTest { batteryUsageStats.getUidBatteryConsumers(); final UidBatteryConsumer uidBatteryConsumer = uidBatteryConsumers.get(0); assertThat(uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_FOREGROUND)) .isEqualTo(60 * MINUTE_IN_MS); .isEqualTo(20 * MINUTE_IN_MS); assertThat(uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_BACKGROUND)) .isEqualTo(10 * MINUTE_IN_MS); .isEqualTo(40 * MINUTE_IN_MS); assertThat(uidBatteryConsumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_AUDIO)) .isWithin(PRECISION).of(2.0); assertThat( Loading Loading @@ -121,40 +121,44 @@ public class BatteryUsageStatsProviderTest { private BatteryStatsImpl prepareBatteryStats() { BatteryStatsImpl batteryStats = mStatsRule.getBatteryStats(); mStatsRule.setTime(10 * MINUTE_IN_MS, 10 * MINUTE_IN_MS); synchronized (batteryStats) { batteryStats.noteActivityResumedLocked(APP_UID, 10 * MINUTE_IN_MS, 10 * MINUTE_IN_MS); batteryStats.noteActivityResumedLocked(APP_UID); } mStatsRule.setTime(10 * MINUTE_IN_MS, 10 * MINUTE_IN_MS); synchronized (batteryStats) { batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_TOP, 10 * MINUTE_IN_MS, 10 * MINUTE_IN_MS); batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_TOP); } mStatsRule.setTime(30 * MINUTE_IN_MS, 30 * MINUTE_IN_MS); synchronized (batteryStats) { batteryStats.noteActivityPausedLocked(APP_UID, 30 * MINUTE_IN_MS, 30 * MINUTE_IN_MS); batteryStats.noteActivityPausedLocked(APP_UID); } mStatsRule.setTime(30 * MINUTE_IN_MS, 30 * MINUTE_IN_MS); synchronized (batteryStats) { batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_SERVICE, 30 * MINUTE_IN_MS, 30 * MINUTE_IN_MS); ActivityManager.PROCESS_STATE_SERVICE); } mStatsRule.setTime(40 * MINUTE_IN_MS, 40 * MINUTE_IN_MS); synchronized (batteryStats) { batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, 40 * MINUTE_IN_MS, 40 * MINUTE_IN_MS); ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE); } mStatsRule.setTime(50 * MINUTE_IN_MS, 50 * MINUTE_IN_MS); synchronized (batteryStats) { batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE, 50 * MINUTE_IN_MS, 50 * MINUTE_IN_MS); ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE); } mStatsRule.setTime(60 * MINUTE_IN_MS, 60 * MINUTE_IN_MS); synchronized (batteryStats) { batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_CACHED_EMPTY, 80 * MINUTE_IN_MS, 80 * MINUTE_IN_MS); ActivityManager.PROCESS_STATE_BOUND_TOP); } mStatsRule.setTime(70 * MINUTE_IN_MS, 70 * MINUTE_IN_MS); synchronized (batteryStats) { batteryStats.noteUidProcessStateLocked(APP_UID, ActivityManager.PROCESS_STATE_CACHED_EMPTY); } synchronized (batteryStats) { batteryStats.noteFlashlightOnLocked(APP_UID, 1000, 1000); } Loading