From 804c3824b9a0021f5d18b7c2550e2956fd880f65 Mon Sep 17 00:00:00 2001 From: Sriram Ramasubramanian Date: Tue, 2 Apr 2013 15:37:00 -0700 Subject: [PATCH] Bug 856767: Finalize cursors on about:home. [r=mfinkle] --- .../android/base/widget/AboutHomeContent.java | 3 ++- mobile/android/base/widget/TopSitesView.java | 27 +++++++++---------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/mobile/android/base/widget/AboutHomeContent.java b/mobile/android/base/widget/AboutHomeContent.java index 1bb2047ca73a..ab3ce7236155 100644 --- a/mobile/android/base/widget/AboutHomeContent.java +++ b/mobile/android/base/widget/AboutHomeContent.java @@ -192,11 +192,12 @@ public class AboutHomeContent extends ScrollView * Reinflates and updates all components of this view. */ public void refresh() { + mTopSites.onDestroy(); + // We must remove the currently inflated view to allow for reinflation. removeAllViews(); inflate(); - mTopSites.refresh(); // Refresh all elements. update(AboutHomeContent.UpdateFlags.ALL); diff --git a/mobile/android/base/widget/TopSitesView.java b/mobile/android/base/widget/TopSitesView.java index 2cc349d0cab3..e18f4cb8b3f1 100644 --- a/mobile/android/base/widget/TopSitesView.java +++ b/mobile/android/base/widget/TopSitesView.java @@ -141,9 +141,16 @@ public class TopSitesView extends GridView { public void onDestroy() { if (mTopSitesAdapter != null) { - Cursor cursor = mTopSitesAdapter.getCursor(); - if (cursor != null && !cursor.isClosed()) - cursor.close(); + setAdapter(null); + final Cursor cursor = mTopSitesAdapter.getCursor(); + + ThreadUtils.postToBackgroundThread(new Runnable() { + @Override + public void run() { + if (cursor != null && !cursor.isClosed()) + cursor.close(); + } + }); } } @@ -186,12 +193,9 @@ public class TopSitesView extends GridView { public void loadTopSites() { final ContentResolver resolver = mContext.getContentResolver(); - Cursor old = null; - if (mTopSitesAdapter != null) { - old = mTopSitesAdapter.getCursor(); - } + // Swap in the new cursor. - final Cursor oldCursor = old; + final Cursor oldCursor = (mTopSitesAdapter != null) ? mTopSitesAdapter.getCursor() : null; final Cursor newCursor = BrowserDB.getTopSites(resolver, mNumberOfTopSites); post(new Runnable() { @@ -340,13 +344,6 @@ public class TopSitesView extends GridView { mLoadCompleteCallback = callback; } - public void refresh() { - if (mTopSitesAdapter != null) - mTopSitesAdapter.notifyDataSetChanged(); - - setAdapter(mTopSitesAdapter); - } - private class TopSitesViewHolder { public TextView titleView = null; public ImageView thumbnailView = null;