Close cursor after getting data from DB
Fixes: 64487360
Test: manual
Change-Id: I7d8a7550dca272a62b2c664cc893e4319e628c18
diff --git a/src/com/android/settings/search/DatabaseResultLoader.java b/src/com/android/settings/search/DatabaseResultLoader.java
index 73b383b..7815a45 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 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 @@
* @return A set of the matching results.
*/
private Set<SearchResult> 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 87457f5..e8efe85 100644
--- a/src/com/android/settings/search/SavedQueryLoader.java
+++ b/src/com/android/settings/search/SavedQueryLoader.java
@@ -34,7 +34,7 @@
public class SavedQueryLoader extends AsyncLoader<List<? extends SearchResult>> {
// 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 @@
@Override
public List<? extends SearchResult> 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<SearchResult> convertCursorToResult(Cursor cursor) {