Invoke close() method for BatteryUsageStats to close cursor window

invoke close() method for BatteryUsageStats to close cursor window,
since BatteryUsageStats will implement "Closeable" interface in T.
(from Dimitri's request)

Bug: 201229421
Test: make SettingsRoboTests
Change-Id: Ibfca404d00cce51405cffddb636f685869ac130b
This commit is contained in:
ykhung
2021-09-29 00:44:11 +08:00
parent 96a8e63ebd
commit 454698d97e
4 changed files with 43 additions and 3 deletions

View File

@@ -167,7 +167,14 @@ public class BatteryInfo {
new String[0], /* includePowerModels */ false).build(); new String[0], /* includePowerModels */ false).build();
} }
} }
return getBatteryInfo(context, stats, shortString); final BatteryInfo batteryInfo =
getBatteryInfo(context, stats, shortString);
try {
stats.close();
} catch (Exception e) {
Log.e(TAG, "BatteryUsageStats.close() failed", e);
}
return batteryInfo;
} }
@Override @Override

View File

@@ -405,6 +405,11 @@ public class BatteryUtils {
batteryUsageStats, estimate, elapsedRealtimeUs, false /* shortString */); batteryUsageStats, estimate, elapsedRealtimeUs, false /* shortString */);
BatteryUtils.logRuntime(tag, "BatteryInfoLoader.loadInBackground", startTime); BatteryUtils.logRuntime(tag, "BatteryInfoLoader.loadInBackground", startTime);
try {
batteryUsageStats.close();
} catch (Exception e) {
Log.e(TAG, "BatteryUsageStats.close() failed", e);
}
return batteryInfo; return batteryInfo;
} }

View File

@@ -22,6 +22,7 @@ import android.os.BatteryStats;
import android.os.BatteryStatsManager; import android.os.BatteryStatsManager;
import android.os.BatteryUsageStats; import android.os.BatteryUsageStats;
import android.os.SystemClock; import android.os.SystemClock;
import android.util.Log;
import com.android.internal.os.BatteryStatsHelper; import com.android.internal.os.BatteryStatsHelper;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
@@ -34,6 +35,8 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
public class DebugEstimatesLoader extends AsyncLoaderCompat<List<BatteryInfo>> { public class DebugEstimatesLoader extends AsyncLoaderCompat<List<BatteryInfo>> {
private static final String TAG = "DebugEstimatesLoader";
private BatteryStatsHelper mStatsHelper; private BatteryStatsHelper mStatsHelper;
public DebugEstimatesLoader(Context context, BatteryStatsHelper statsHelper) { public DebugEstimatesLoader(Context context, BatteryStatsHelper statsHelper) {
@@ -58,8 +61,16 @@ public class DebugEstimatesLoader extends AsyncLoaderCompat<List<BatteryInfo>> {
Intent batteryBroadcast = getContext().registerReceiver(null, Intent batteryBroadcast = getContext().registerReceiver(null,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
BatteryStats stats = mStatsHelper.getStats(); BatteryStats stats = mStatsHelper.getStats();
BatteryUsageStats batteryUsageStats = BatteryUsageStats batteryUsageStats;
context.getSystemService(BatteryStatsManager.class).getBatteryUsageStats(); try {
batteryUsageStats = context.getSystemService(BatteryStatsManager.class)
.getBatteryUsageStats();
} catch (RuntimeException e) {
Log.e(TAG, "getBatteryInfo() from getBatteryUsageStats()", e);
// Use default BatteryUsageStats.
batteryUsageStats = new BatteryUsageStats.Builder(
new String[0], /* includePowerModels */ false).build();
}
BatteryInfo oldinfo = BatteryInfo.getBatteryInfoOld(getContext(), batteryBroadcast, BatteryInfo oldinfo = BatteryInfo.getBatteryInfoOld(getContext(), batteryBroadcast,
batteryUsageStats, elapsedRealtimeUs, false); batteryUsageStats, elapsedRealtimeUs, false);
@@ -74,6 +85,12 @@ public class DebugEstimatesLoader extends AsyncLoaderCompat<List<BatteryInfo>> {
List<BatteryInfo> infos = new ArrayList<>(); List<BatteryInfo> infos = new ArrayList<>();
infos.add(oldinfo); infos.add(oldinfo);
infos.add(newInfo); infos.add(newInfo);
try {
batteryUsageStats.close();
} catch (Exception e) {
Log.e(TAG, "BatteryUsageStats.close() failed", e);
}
return infos; return infos;
} }
} }

View File

@@ -22,6 +22,7 @@ import android.content.Context;
import android.os.BatteryUsageStats; import android.os.BatteryUsageStats;
import android.os.Bundle; import android.os.Bundle;
import android.os.UserManager; import android.os.UserManager;
import android.util.Log;
import android.view.Menu; import android.view.Menu;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@@ -103,6 +104,16 @@ public abstract class PowerUsageBase extends DashboardFragment {
final long startTime = System.currentTimeMillis(); final long startTime = System.currentTimeMillis();
historyPref.setBatteryUsageStats(mBatteryUsageStats); historyPref.setBatteryUsageStats(mBatteryUsageStats);
BatteryUtils.logRuntime(TAG, "updatePreference", startTime); 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 private class BatteryUsageStatsLoaderCallbacks