Add BatteryInfo logging to settings
This Cl adds a few log statements to BatteryInfo to try
and determine what the bottleneck in the Battery Settings
Advanced page could be.
Test: robotests still pass
Bug: 62959645
Change-Id: I1ff712d97bc8be78873c63e187edbffa8e10cd21
diff --git a/src/com/android/settings/fuelgauge/BatteryInfo.java b/src/com/android/settings/fuelgauge/BatteryInfo.java
index 5eada88..b0f2f84 100644
--- a/src/com/android/settings/fuelgauge/BatteryInfo.java
+++ b/src/com/android/settings/fuelgauge/BatteryInfo.java
@@ -46,6 +46,7 @@
public String statusLabel;
private boolean mCharging;
private BatteryStats mStats;
+ private static final String LOG_TAG = "BatteryInfo";
private long timePeriod;
public interface Callback {
@@ -132,6 +133,7 @@
new AsyncTask<Void, Void, BatteryInfo>() {
@Override
protected BatteryInfo doInBackground(Void... params) {
+ final long startTime = System.currentTimeMillis();
PowerUsageFeatureProvider provider =
FeatureFactory.getFactory(context).getPowerUsageFeatureProvider(context);
final BatteryUtils batteryUtils = BatteryUtils.getInstance(context);
@@ -144,17 +146,19 @@
// 0 means we are discharging, anything else means charging
boolean discharging =
batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) == 0;
+
if (discharging && provider != null
&& provider.isEnhancedBatteryPredictionEnabled(context)) {
+ final long prediction = provider.getEnhancedBatteryPrediction(context);
+ BatteryUtils.logRuntime(LOG_TAG, "time for enhanced BatteryInfo", startTime);
return BatteryInfo.getBatteryInfo(context, batteryBroadcast, stats,
- elapsedRealtimeUs, shortString,
- utils.convertMsToUs(provider.getEnhancedBatteryPrediction(context)),
- true);
+ elapsedRealtimeUs, shortString, utils.convertMsToUs(prediction), true);
} else {
+ long prediction = discharging
+ ? stats.computeBatteryTimeRemaining(elapsedRealtimeUs) : 0;
+ BatteryUtils.logRuntime(LOG_TAG, "time for regular BatteryInfo", startTime);
return BatteryInfo.getBatteryInfo(context, batteryBroadcast, stats,
- elapsedRealtimeUs, shortString,
- discharging ? stats.computeBatteryTimeRemaining(elapsedRealtimeUs) : 0,
- false);
+ elapsedRealtimeUs, shortString, prediction, false);
}
}
@@ -176,6 +180,7 @@
public static BatteryInfo getBatteryInfo(Context context, Intent batteryBroadcast,
BatteryStats stats, long elapsedRealtimeUs, boolean shortString, long drainTimeUs,
boolean basedOnUsage) {
+ final long startTime = System.currentTimeMillis();
BatteryInfo info = new BatteryInfo();
info.mStats = stats;
info.batteryLevel = Utils.getBatteryLevel(batteryBroadcast);
@@ -232,6 +237,7 @@
chargeStatusLabel);
}
}
+ BatteryUtils.logRuntime(LOG_TAG, "time for getBatteryInfo", startTime);
return info;
}
diff --git a/src/com/android/settings/fuelgauge/BatteryInfoLoader.java b/src/com/android/settings/fuelgauge/BatteryInfoLoader.java
index e85acc5..efaca30 100644
--- a/src/com/android/settings/fuelgauge/BatteryInfoLoader.java
+++ b/src/com/android/settings/fuelgauge/BatteryInfoLoader.java
@@ -33,7 +33,9 @@
* when not available.
*/
public class BatteryInfoLoader extends AsyncLoader<BatteryInfo>{
+
BatteryStatsHelper mStatsHelper;
+ private static final String LOG_TAG = "BatteryInfoLoader";
public BatteryInfoLoader(Context context, BatteryStatsHelper batteryStatsHelper) {
super(context);
@@ -47,6 +49,7 @@
@Override
public BatteryInfo loadInBackground() {
+ final long startTime = System.currentTimeMillis();
Context context = getContext();
PowerUsageFeatureProvider powerUsageFeatureProvider =
FeatureFactory.getFactory(context).getPowerUsageFeatureProvider(context);
@@ -67,19 +70,20 @@
final Uri queryUri = powerUsageFeatureProvider.getEnhancedBatteryPredictionUri();
cursor = context.getContentResolver().query(queryUri, null, null, null, null);
}
+ BatteryStats stats = mStatsHelper.getStats();
+ batteryUtils.logRuntime(LOG_TAG, "BatteryInfoLoader post query", startTime);
if (cursor != null && cursor.moveToFirst()) {
long enhancedEstimate = powerUsageFeatureProvider.getTimeRemainingEstimate(cursor);
- batteryInfo = BatteryInfo.getBatteryInfo(context, batteryBroadcast,
- mStatsHelper.getStats(), elapsedRealtimeUs, false /* shortString */,
+ batteryInfo = BatteryInfo.getBatteryInfo(context, batteryBroadcast, stats,
+ elapsedRealtimeUs, false /* shortString */,
batteryUtils.convertMsToUs(enhancedEstimate), true /* basedOnUsage */);
} else {
- BatteryStats stats = mStatsHelper.getStats();
batteryInfo = BatteryInfo.getBatteryInfo(context, batteryBroadcast, stats,
elapsedRealtimeUs, false /* shortString */,
discharging ? 0 : stats.computeBatteryTimeRemaining(elapsedRealtimeUs),
false /* basedOnUsage */);
}
-
+ batteryUtils.logRuntime(LOG_TAG, "BatteryInfoLoader.loadInBackground", startTime);
return batteryInfo;
}
}
diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java
index 7dc7800..b8646f7 100644
--- a/src/com/android/settings/fuelgauge/BatteryUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryUtils.java
@@ -285,6 +285,10 @@
}
+ public static void logRuntime(String tag, String message, long startTime) {
+ Log.d(tag, message + ": " + (System.currentTimeMillis() - startTime) + "ms");
+ }
+
/**
* Find package uid from package name
*