Bug 856767: Finalize cursors on about:home. [r=mfinkle]

--HG--
extra : rebase_source : 9389663903676defaf2c4cfcd818abe4e60e801e
This commit is contained in:
Sriram Ramasubramanian 2013-04-02 11:26:35 -07:00
parent 10f2c4eacf
commit f0502a3c9c
2 changed files with 13 additions and 16 deletions

View File

@ -219,11 +219,12 @@ public class AboutHomeContent extends ScrollView
* Reinflates and updates all components of this view. * Reinflates and updates all components of this view.
*/ */
public void refresh() { public void refresh() {
mTopSites.onDestroy();
// We must remove the currently inflated view to allow for reinflation. // We must remove the currently inflated view to allow for reinflation.
removeAllViews(); removeAllViews();
inflate(); inflate();
mTopSites.refresh();
// Refresh all elements. // Refresh all elements.
update(AboutHomeContent.UpdateFlags.ALL); update(AboutHomeContent.UpdateFlags.ALL);

View File

@ -141,9 +141,15 @@ public class TopSitesView extends GridView {
public void onDestroy() { public void onDestroy() {
if (mTopSitesAdapter != null) { if (mTopSitesAdapter != null) {
Cursor cursor = mTopSitesAdapter.getCursor(); final Cursor cursor = mTopSitesAdapter.getCursor();
if (cursor != null && !cursor.isClosed())
cursor.close(); ThreadUtils.postToBackgroundThread(new Runnable() {
@Override
public void run() {
if (cursor != null && !cursor.isClosed())
cursor.close();
}
});
} }
} }
@ -186,12 +192,9 @@ public class TopSitesView extends GridView {
public void loadTopSites() { public void loadTopSites() {
final ContentResolver resolver = mContext.getContentResolver(); final ContentResolver resolver = mContext.getContentResolver();
Cursor old = null;
if (mTopSitesAdapter != null) {
old = mTopSitesAdapter.getCursor();
}
// Swap in the new cursor. // Swap in the new cursor.
final Cursor oldCursor = old; final Cursor oldCursor = (mTopSitesAdapter != null) ? mTopSitesAdapter.getCursor() : null;
final Cursor newCursor = BrowserDB.getTopSites(resolver, mNumberOfTopSites); final Cursor newCursor = BrowserDB.getTopSites(resolver, mNumberOfTopSites);
post(new Runnable() { post(new Runnable() {
@ -342,13 +345,6 @@ public class TopSitesView extends GridView {
mLoadCompleteCallback = callback; mLoadCompleteCallback = callback;
} }
public void refresh() {
if (mTopSitesAdapter != null)
mTopSitesAdapter.notifyDataSetChanged();
setAdapter(mTopSitesAdapter);
}
private class TopSitesViewHolder { private class TopSitesViewHolder {
public TextView titleView = null; public TextView titleView = null;
public ImageView thumbnailView = null; public ImageView thumbnailView = null;