Merge "Refine the BatteryUsageStats close() method invoke timing" into tm-dev
diff --git a/src/com/android/settings/fuelgauge/BatteryInfo.java b/src/com/android/settings/fuelgauge/BatteryInfo.java
index 98f19fe..b1e4c34 100644
--- a/src/com/android/settings/fuelgauge/BatteryInfo.java
+++ b/src/com/android/settings/fuelgauge/BatteryInfo.java
@@ -153,6 +153,7 @@
new AsyncTask<Void, Void, BatteryInfo>() {
@Override
protected BatteryInfo doInBackground(Void... params) {
+ boolean shouldCloseBatteryUsageStats = false;
BatteryUsageStats stats;
if (batteryUsageStats != null) {
stats = batteryUsageStats;
@@ -160,6 +161,7 @@
try {
stats = context.getSystemService(BatteryStatsManager.class)
.getBatteryUsageStats();
+ shouldCloseBatteryUsageStats = true;
} catch (RuntimeException e) {
Log.e(TAG, "getBatteryInfo() from getBatteryUsageStats()", e);
// Use default BatteryUsageStats.
@@ -168,10 +170,12 @@
}
final BatteryInfo batteryInfo =
getBatteryInfo(context, stats, shortString);
- try {
- stats.close();
- } catch (Exception e) {
- Log.e(TAG, "BatteryUsageStats.close() failed", e);
+ if (shouldCloseBatteryUsageStats) {
+ try {
+ stats.close();
+ } catch (Exception e) {
+ Log.e(TAG, "BatteryUsageStats.close() failed", e);
+ }
}
return batteryInfo;
}
diff --git a/src/com/android/settings/fuelgauge/PowerUsageBase.java b/src/com/android/settings/fuelgauge/PowerUsageBase.java
index e950679..6563155 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageBase.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageBase.java
@@ -83,6 +83,7 @@
public void onStop() {
super.onStop();
mBatteryBroadcastReceiver.unRegister();
+ closeBatteryUsageStatsIfNeeded();
}
protected void restartBatteryStatsLoader(int refreshType) {
@@ -104,16 +105,6 @@
final long startTime = System.currentTimeMillis();
historyPref.setBatteryUsageStats(mBatteryUsageStats);
BatteryUtils.logRuntime(TAG, "updatePreference", startTime);
- if (mBatteryUsageStats == null) {
- return;
- }
- try {
- mBatteryUsageStats.close();
- } catch (Exception e) {
- Log.e(TAG, "BatteryUsageStats.close() failed", e);
- } finally {
- mBatteryUsageStats = null;
- }
}
private class BatteryUsageStatsLoaderCallbacks
@@ -130,6 +121,7 @@
@Override
public void onLoadFinished(Loader<BatteryUsageStats> loader,
BatteryUsageStats batteryUsageStats) {
+ closeBatteryUsageStatsIfNeeded();
mBatteryUsageStats = batteryUsageStats;
PowerUsageBase.this.onLoadFinished(mRefreshType);
}
@@ -138,4 +130,17 @@
public void onLoaderReset(Loader<BatteryUsageStats> loader) {
}
}
+
+ private void closeBatteryUsageStatsIfNeeded() {
+ if (mBatteryUsageStats == null) {
+ return;
+ }
+ try {
+ mBatteryUsageStats.close();
+ } catch (Exception e) {
+ Log.e(TAG, "BatteryUsageStats.close() failed", e);
+ } finally {
+ mBatteryUsageStats = null;
+ }
+ }
}