diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java index 327d3a4a340..194b2fbd46a 100644 --- a/src/com/android/settings/fuelgauge/BatteryUtils.java +++ b/src/com/android/settings/fuelgauge/BatteryUtils.java @@ -33,6 +33,8 @@ import com.android.settings.overlay.FeatureFactory; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.util.Collections; +import java.util.Comparator; import java.util.List; /** @@ -219,7 +221,7 @@ public class BatteryUtils { * Calculate the whole running time in the state {@code statsType} * * @param batteryStatsHelper utility class that contains the data - * @param statsType state that we want to calculate the time for + * @param statsType state that we want to calculate the time for * @return the running time in millis */ public long calculateRunningTimeBasedOnStatsType(BatteryStatsHelper batteryStatsHelper, @@ -247,6 +249,18 @@ public class BatteryUtils { return ArrayUtils.isEmpty(packageNames) ? null : packageNames[0]; } + /** + * Sort the {@code usageList} based on {@link BatterySipper#totalPowerMah} + */ + public void sortUsageList(List usageList) { + Collections.sort(usageList, new Comparator() { + @Override + public int compare(BatterySipper a, BatterySipper b) { + return Double.compare(b.totalPowerMah, a.totalPowerMah); + } + }); + } + private long convertUsToMs(long timeUs) { return timeUs / 1000; } diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java index 512dc179fa3..644cf7fd7e1 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java +++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java @@ -77,8 +77,6 @@ import com.android.settingslib.widget.FooterPreferenceMixin; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; import java.util.List; /** @@ -401,7 +399,7 @@ public class PowerUsageSummary extends PowerUsageBase implements * * @return A sorted list of apps using power. */ - private static List getCoalescedUsageList(final List sippers) { + private List getCoalescedUsageList(final List sippers) { final SparseArray uidList = new SparseArray<>(); final ArrayList results = new ArrayList<>(); @@ -476,12 +474,7 @@ public class PowerUsageSummary extends PowerUsageBase implements } // The sort order must have changed, so re-sort based on total power use. - Collections.sort(results, new Comparator() { - @Override - public int compare(BatterySipper a, BatterySipper b) { - return Double.compare(b.totalPowerMah, a.totalPowerMah); - } - }); + mBatteryUtils.sortUsageList(results); return results; } @@ -532,9 +525,9 @@ public class PowerUsageSummary extends PowerUsageBase implements if (averagePower >= MIN_AVERAGE_POWER_THRESHOLD_MILLI_AMP || USE_FAKE_DATA) { final List usageList = getCoalescedUsageList( USE_FAKE_DATA ? getFakeStats() : mStatsHelper.getUsageList()); - double hiddenPowerMah = mShowAllApps ? 0 : mBatteryUtils.removeHiddenBatterySippers(usageList); + mBatteryUtils.sortUsageList(usageList); final int numSippers = usageList.size(); for (int i = 0; i < numSippers; i++) { diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java index 395d36d1b32..45836adc2fe 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java @@ -292,6 +292,19 @@ public class BatteryUtilsTest { BatteryStats.STATS_SINCE_CHARGED)).isEqualTo(TIME_SINCE_LAST_FULL_CHARGE_MS); } + @Test + public void testSortUsageList() { + final List sippers = new ArrayList<>(); + sippers.add(mNormalBatterySipper); + sippers.add(mScreenBatterySipper); + sippers.add(mSystemBatterySipper); + + mBatteryUtils.sortUsageList(sippers); + + assertThat(sippers).containsExactly(mNormalBatterySipper, mSystemBatterySipper, + mScreenBatterySipper); + } + private BatterySipper createTestSmearBatterySipper(long activityTime, double totalPowerMah, int uidCode, boolean isUidNull) { final BatterySipper sipper = mock(BatterySipper.class);