Refine the BatteryUsageStats close() method invoke timing
Refine invoke batteryUsageStats.close() timing to 1) avoid closing it before the UI is ready to ignore showing the battery usage app list data for AOSP version, and 2) avoid close the BatteryUsageStats which is passed from caller components in the BatteryInfo with unexpected behavior. Bug: 220717612 Test: make RunSettingsRoboTests -j56 ROBOTEST_FILTER="com.android.settings.fuelgauge" Change-Id: I0f75580ac68d72b41fa9a7f43aa6ea694f0992ff
This commit is contained in:
@@ -153,6 +153,7 @@ public class BatteryInfo {
|
||||
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 @@ public class BatteryInfo {
|
||||
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 @@ public class BatteryInfo {
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user