From 623faaa00e7bd04463e1393bbb8f210d005ef47f Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Mon, 7 Aug 2017 15:11:00 -0700 Subject: [PATCH] Close cursor after getting data from DB Fixes: 64487360 Test: manual Change-Id: I7d8a7550dca272a62b2c664cc893e4319e628c18 --- .../settings/search/DatabaseResultLoader.java | 16 +++++++++------- .../settings/search/SavedQueryLoader.java | 10 ++++++---- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/com/android/settings/search/DatabaseResultLoader.java b/src/com/android/settings/search/DatabaseResultLoader.java index 73b383ba7b0..7815a45ad2c 100644 --- a/src/com/android/settings/search/DatabaseResultLoader.java +++ b/src/com/android/settings/search/DatabaseResultLoader.java @@ -17,6 +17,9 @@ package com.android.settings.search; +import static com.android.settings.search.IndexDatabaseHelper.IndexColumns; +import static com.android.settings.search.IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX; + import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; @@ -28,9 +31,6 @@ import com.android.settings.utils.AsyncLoader; import java.util.HashSet; import java.util.Set; -import static com.android.settings.search.IndexDatabaseHelper.IndexColumns; -import static com.android.settings.search.IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX; - /** * AsyncTask to retrieve Settings, First party app and any intent based results. */ @@ -191,10 +191,12 @@ public class DatabaseResultLoader extends AsyncLoader query(String whereClause, String[] selection, int baseRank) { - SQLiteDatabase database = IndexDatabaseHelper.getInstance(mContext).getReadableDatabase(); - final Cursor resultCursor = database.query(TABLE_PREFS_INDEX, SELECT_COLUMNS, whereClause, - selection, null, null, null); - return mConverter.convertCursor(mSiteMapManager, resultCursor, baseRank); + final SQLiteDatabase database = + IndexDatabaseHelper.getInstance(mContext).getReadableDatabase(); + try (Cursor resultCursor = database.query(TABLE_PREFS_INDEX, SELECT_COLUMNS, whereClause, + selection, null, null, null)) { + return mConverter.convertCursor(mSiteMapManager, resultCursor, baseRank); + } } /** diff --git a/src/com/android/settings/search/SavedQueryLoader.java b/src/com/android/settings/search/SavedQueryLoader.java index 87457f56b14..e8efe85f78d 100644 --- a/src/com/android/settings/search/SavedQueryLoader.java +++ b/src/com/android/settings/search/SavedQueryLoader.java @@ -34,7 +34,7 @@ import java.util.List; public class SavedQueryLoader extends AsyncLoader> { // Max number of proposed suggestions - @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) + @VisibleForTesting static final int MAX_PROPOSED_SUGGESTIONS = 5; private final SQLiteDatabase mDatabase; @@ -51,15 +51,17 @@ public class SavedQueryLoader extends AsyncLoader> @Override public List loadInBackground() { - Cursor cursor = mDatabase.query(IndexDatabaseHelper.Tables.TABLE_SAVED_QUERIES /* table */, + try (final Cursor cursor = mDatabase.query( + IndexDatabaseHelper.Tables.TABLE_SAVED_QUERIES /* table */, new String[]{SavedQueriesColumns.QUERY} /* columns */, null /* selection */, null /* selectionArgs */, null /* groupBy */, null /* having */, "rowId DESC" /* orderBy */, - String.valueOf(MAX_PROPOSED_SUGGESTIONS) /* limit */); - return convertCursorToResult(cursor); + String.valueOf(MAX_PROPOSED_SUGGESTIONS) /* limit */)) { + return convertCursorToResult(cursor); + } } private List convertCursorToResult(Cursor cursor) {