diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java index 849144a7993..3d9dbb6db2c 100644 --- a/src/com/android/settings/fuelgauge/BatteryUtils.java +++ b/src/com/android/settings/fuelgauge/BatteryUtils.java @@ -31,6 +31,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; /** @@ -213,6 +215,19 @@ public class BatteryUtils { return (powerUsageMah / (totalPowerMah - hiddenPowerMah)) * dischargeAmount; } + /** + * Sort the {@code usageList} based on {@link BatterySipper#totalPowerMah} + * @param usageList + */ + 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 b3d07b8abac..cadfb5361be 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java +++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java @@ -66,8 +66,6 @@ import com.android.settingslib.BatteryInfo; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; import java.util.List; /** @@ -313,7 +311,7 @@ public class PowerUsageSummary extends PowerUsageBase { * * @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<>(); @@ -388,12 +386,7 @@ public class PowerUsageSummary extends PowerUsageBase { } // 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; } @@ -435,9 +428,9 @@ public class PowerUsageSummary extends PowerUsageBase { 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 03759ec6fdc..009a91c96ad 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java @@ -278,6 +278,19 @@ public class BatteryUtilsTest { BATTERY_APP_USAGE + BATTERY_SCREEN_USAGE); } + @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);