Merge "Move load battery consumer icon and label into the background" into sc-dev am: 648f773c7c
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/14682957 Change-Id: I6576ce630a72df6db5d54de460fc3fe09d6dd539
This commit is contained in:
@@ -20,6 +20,7 @@ import android.app.settings.SettingsEnums;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
@@ -64,7 +65,6 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
|||||||
ExpandDividerPreference.OnExpandListener {
|
ExpandDividerPreference.OnExpandListener {
|
||||||
private static final String TAG = "BatteryChartPreferenceController";
|
private static final String TAG = "BatteryChartPreferenceController";
|
||||||
private static final String KEY_FOOTER_PREF = "battery_graph_footer";
|
private static final String KEY_FOOTER_PREF = "battery_graph_footer";
|
||||||
private static final int ADD_FOOTER_DELAYED_MS = 250;
|
|
||||||
|
|
||||||
/** Desired battery history size for timestamp slots. */
|
/** Desired battery history size for timestamp slots. */
|
||||||
public static final int DESIRED_HISTORY_SIZE = 25;
|
public static final int DESIRED_HISTORY_SIZE = 25;
|
||||||
@@ -267,11 +267,6 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
|||||||
|
|
||||||
void setBatteryHistoryMap(
|
void setBatteryHistoryMap(
|
||||||
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) {
|
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) {
|
||||||
mHandler.post(() -> setBatteryHistoryMapInner(batteryHistoryMap));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setBatteryHistoryMapInner(
|
|
||||||
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) {
|
|
||||||
// Resets all battery history data relative variables.
|
// Resets all battery history data relative variables.
|
||||||
if (batteryHistoryMap == null || batteryHistoryMap.isEmpty()) {
|
if (batteryHistoryMap == null || batteryHistoryMap.isEmpty()) {
|
||||||
mBatteryIndexedMap = null;
|
mBatteryIndexedMap = null;
|
||||||
@@ -298,19 +293,15 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
|||||||
mBatteryHistoryLevels[index] =
|
mBatteryHistoryLevels[index] =
|
||||||
Math.round(batteryLevelCounter / entryMap.size());
|
Math.round(batteryLevelCounter / entryMap.size());
|
||||||
}
|
}
|
||||||
// Generates indexed usage map for chart.
|
|
||||||
mBatteryIndexedMap =
|
|
||||||
ConvertUtils.getIndexedUsageMap(
|
|
||||||
mPrefContext, /*timeSlotSize=*/ CHART_LEVEL_ARRAY_SIZE - 1,
|
|
||||||
mBatteryHistoryKeys, batteryHistoryMap,
|
|
||||||
/*purgeLowPercentageAndFakeData=*/ true);
|
|
||||||
forceRefreshUi();
|
forceRefreshUi();
|
||||||
|
|
||||||
Log.d(TAG, String.format(
|
Log.d(TAG, String.format(
|
||||||
"setBatteryHistoryMap() size=%d\nkeys=%s\nlevels=%s",
|
"setBatteryHistoryMap() size=%d\nkeys=%s\nlevels=%s",
|
||||||
batteryHistoryMap.size(),
|
batteryHistoryMap.size(),
|
||||||
utcToLocalTime(mBatteryHistoryKeys),
|
utcToLocalTime(mBatteryHistoryKeys),
|
||||||
Arrays.toString(mBatteryHistoryLevels)));
|
Arrays.toString(mBatteryHistoryLevels)));
|
||||||
|
|
||||||
|
// Loads item icon and label in the background.
|
||||||
|
new LoadAllItemsInfoTask(batteryHistoryMap).execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setBatteryChartView(final BatteryChartView batteryChartView) {
|
void setBatteryChartView(final BatteryChartView batteryChartView) {
|
||||||
@@ -599,9 +590,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
|||||||
containAppItems
|
containAppItems
|
||||||
? R.string.battery_usage_screen_footer
|
? R.string.battery_usage_screen_footer
|
||||||
: R.string.battery_usage_screen_footer_empty));
|
: R.string.battery_usage_screen_footer_empty));
|
||||||
mHandler.postDelayed(
|
mHandler.post(() -> mPreferenceScreen.addPreference(mFooterPreference));
|
||||||
() -> mPreferenceScreen.addPreference(mFooterPreference),
|
|
||||||
ADD_FOOTER_DELAYED_MS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String utcToLocalTime(long[] timestamps) {
|
private static String utcToLocalTime(long[] timestamps) {
|
||||||
@@ -670,4 +659,53 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
|||||||
}
|
}
|
||||||
return batteryHistoryKeys;
|
return batteryHistoryKeys;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Loads all items icon and label in the background.
|
||||||
|
private final class LoadAllItemsInfoTask
|
||||||
|
extends AsyncTask<Void, Void, Map<Integer, List<BatteryDiffEntry>>> {
|
||||||
|
|
||||||
|
private long[] mBatteryHistoryKeysCache;
|
||||||
|
private Map<Long, Map<String, BatteryHistEntry>> mBatteryHistoryMap;
|
||||||
|
|
||||||
|
private LoadAllItemsInfoTask(
|
||||||
|
Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) {
|
||||||
|
this.mBatteryHistoryMap = batteryHistoryMap;
|
||||||
|
this.mBatteryHistoryKeysCache = mBatteryHistoryKeys;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Map<Integer, List<BatteryDiffEntry>> doInBackground(Void... voids) {
|
||||||
|
if (mPrefContext == null || mBatteryHistoryKeysCache == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
final long startTime = System.currentTimeMillis();
|
||||||
|
final Map<Integer, List<BatteryDiffEntry>> indexedUsageMap =
|
||||||
|
ConvertUtils.getIndexedUsageMap(
|
||||||
|
mPrefContext, /*timeSlotSize=*/ CHART_LEVEL_ARRAY_SIZE - 1,
|
||||||
|
mBatteryHistoryKeysCache, mBatteryHistoryMap,
|
||||||
|
/*purgeLowPercentageAndFakeData=*/ true);
|
||||||
|
// Pre-loads each BatteryDiffEntry relative icon and label for all slots.
|
||||||
|
for (List<BatteryDiffEntry> entries : indexedUsageMap.values()) {
|
||||||
|
entries.forEach(entry -> entry.loadLabelAndIcon());
|
||||||
|
}
|
||||||
|
Log.d(TAG, String.format("execute LoadAllItemsInfoTask in %d/ms",
|
||||||
|
(System.currentTimeMillis() - startTime)));
|
||||||
|
return indexedUsageMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(
|
||||||
|
Map<Integer, List<BatteryDiffEntry>> indexedUsageMap) {
|
||||||
|
mBatteryHistoryMap = null;
|
||||||
|
mBatteryHistoryKeysCache = null;
|
||||||
|
if (indexedUsageMap == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Posts results back to main thread to refresh UI.
|
||||||
|
mHandler.post(() -> {
|
||||||
|
mBatteryIndexedMap = indexedUsageMap;
|
||||||
|
forceRefreshUi();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -142,7 +142,7 @@ public class BatteryDiffEntry {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadLabelAndIcon() {
|
void loadLabelAndIcon() {
|
||||||
if (mIsLoaded) {
|
if (mIsLoaded) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user