From f164be387e8e64fc97997dfa352aeaba0da83b55 Mon Sep 17 00:00:00 2001 From: Wesley Wang Date: Thu, 10 Nov 2022 14:54:17 +0800 Subject: [PATCH] Invoke close() method for BatteryUsageStats to close cursor window - Invoke close() method for BatteryUsageStats to close cursor window, avoid OOM. Bug: 245385410 Test: make SettingsRoboTests Change-Id: I68f36a42a33d2546cb191cec88f5431e24dd5b84 --- .../appinfo/AppBatteryPreferenceController.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java b/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java index 19f3a46aaee..40756a0a5c3 100644 --- a/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java @@ -161,6 +161,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController public void onPause() { mParent.getLoaderManager().destroyLoader( AppInfoDashboardFragment.LOADER_BATTERY_USAGE_STATS); + closeBatteryUsageStats(); } private void loadBatteryDiffEntries() { @@ -249,6 +250,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController @Override public void onLoadFinished(Loader loader, BatteryUsageStats batteryUsageStats) { + closeBatteryUsageStats(); mBatteryUsageStats = batteryUsageStats; AppBatteryPreferenceController.this.onLoadFinished(); } @@ -257,4 +259,16 @@ public class AppBatteryPreferenceController extends BasePreferenceController public void onLoaderReset(Loader loader) { } } + + private void closeBatteryUsageStats() { + if (mBatteryUsageStats != null) { + try { + mBatteryUsageStats.close(); + } catch (Exception e) { + Log.e(TAG, "BatteryUsageStats.close() failed", e); + } finally { + mBatteryUsageStats = null; + } + } + } }