diff options
author | John Reck <jreck@google.com> | 2011-02-01 19:32:38 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-02-01 19:32:38 -0800 |
commit | 16b4e4a11c89f98700f34990c1f3849f12e557bb (patch) | |
tree | 9b54b707a639dbc461ca6d6f1bbe315f99cfe49c /src/com/android | |
parent | 4f30c10de7f55e435fcc9bc1762ee45421a8fe65 (diff) | |
parent | 73eb105e5bb53356e171837bd6b13b29661806e3 (diff) | |
download | packages_apps_Browser-16b4e4a11c89f98700f34990c1f3849f12e557bb.zip packages_apps_Browser-16b4e4a11c89f98700f34990c1f3849f12e557bb.tar.gz packages_apps_Browser-16b4e4a11c89f98700f34990c1f3849f12e557bb.tar.bz2 |
Merge "Slow widget memory leak." into honeycomb
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/browser/widget/BookmarkThumbnailWidgetService.java | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java b/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java index 631bf84..cc06349 100644 --- a/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java +++ b/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java @@ -109,7 +109,10 @@ public class BookmarkThumbnailWidgetService extends RemoteViewsService { int[] ids = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS); if (ids != null) { for (int id : ids) { - mFactories.remove(id); + BookmarkFactory bf = mFactories.remove(id); + // Workaround a known framework bug + // onDestroy is currently never called + bf.onDestroy(); } } } else if (ACTION_CHANGE_FOLDER.equals(action)) { @@ -309,9 +312,18 @@ public class BookmarkThumbnailWidgetService extends RemoteViewsService { @Override public void onDestroy() { - recycleBitmaps(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext); prefs.unregisterOnSharedPreferenceChangeListener(this); + + // Workaround known framework bug + // This class currently leaks, so free as much memory as we can + recycleBitmaps(); + mBookmarks.clear(); + mBreadcrumbs.clear(); + if (mLoadTask != null) { + mLoadTask.cancel(false); + mLoadTask = null; + } } @Override |