From 5c5e3bbd0c293671f822f0409f015acb0a6d9a1a Mon Sep 17 00:00:00 2001 From: jackqdyulei Date: Thu, 9 Aug 2018 17:02:13 -0700 Subject: [PATCH] Refactor the BatteryInfo Move the battery stats logic to background because it is time consuming. Bug: 112262502 Test: robotest still pass Change-Id: I794bc82a4f1b5ae5a883c89d447116601a86558f --- .../fuelgauge/BatteryHistoryPreference.java | 2 +- .../settings/fuelgauge/BatteryInfo.java | 31 ++++++++++--------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryPreference.java b/src/com/android/settings/fuelgauge/BatteryHistoryPreference.java index 89b3eddb1b2..115e72c0f07 100644 --- a/src/com/android/settings/fuelgauge/BatteryHistoryPreference.java +++ b/src/com/android/settings/fuelgauge/BatteryHistoryPreference.java @@ -54,7 +54,7 @@ public class BatteryHistoryPreference extends Preference { BatteryInfo.getBatteryInfo(getContext(), info -> { mBatteryInfo = info; notifyChanged(); - }, batteryStats.getStats(), false); + }, batteryStats, false); } public void setBottomSummary(CharSequence text) { diff --git a/src/com/android/settings/fuelgauge/BatteryInfo.java b/src/com/android/settings/fuelgauge/BatteryInfo.java index f642d30fd49..dcbfaa85a8b 100644 --- a/src/com/android/settings/fuelgauge/BatteryInfo.java +++ b/src/com/android/settings/fuelgauge/BatteryInfo.java @@ -134,31 +134,32 @@ public class BatteryInfo { } public static void getBatteryInfo(final Context context, final Callback callback) { - BatteryInfo.getBatteryInfo(context, callback, false /* shortString */); + BatteryInfo.getBatteryInfo(context, callback, null /* statsHelper */, + false /* shortString */); } public static void getBatteryInfo(final Context context, final Callback callback, boolean shortString) { - final long startTime = System.currentTimeMillis(); - BatteryStatsHelper statsHelper = new BatteryStatsHelper(context, true); - statsHelper.create((Bundle) null); - BatteryUtils.logRuntime(LOG_TAG, "time to make batteryStatsHelper", startTime); - BatteryInfo.getBatteryInfo(context, callback, statsHelper, shortString); + BatteryInfo.getBatteryInfo(context, callback, null /* statsHelper */, shortString); } public static void getBatteryInfo(final Context context, final Callback callback, - BatteryStatsHelper statsHelper, boolean shortString) { - final long startTime = System.currentTimeMillis(); - BatteryStats stats = statsHelper.getStats(); - BatteryUtils.logRuntime(LOG_TAG, "time for getStats", startTime); - getBatteryInfo(context, callback, stats, shortString); - } - - public static void getBatteryInfo(final Context context, final Callback callback, - BatteryStats stats, boolean shortString) { + final BatteryStatsHelper statsHelper, boolean shortString) { new AsyncTask() { @Override protected BatteryInfo doInBackground(Void... params) { + final BatteryStats stats; + final long batteryStatsTime = System.currentTimeMillis(); + if (statsHelper == null) { + final BatteryStatsHelper localStatsHelper = new BatteryStatsHelper(context, + true); + localStatsHelper.create((Bundle) null); + stats = localStatsHelper.getStats(); + } else { + stats = statsHelper.getStats(); + } + BatteryUtils.logRuntime(LOG_TAG, "time for getStats", batteryStatsTime); + final long startTime = System.currentTimeMillis(); PowerUsageFeatureProvider provider = FeatureFactory.getFactory(context).getPowerUsageFeatureProvider(context);