summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2011-02-01 19:32:38 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-02-01 19:32:38 -0800
commit16b4e4a11c89f98700f34990c1f3849f12e557bb (patch)
tree9b54b707a639dbc461ca6d6f1bbe315f99cfe49c /src/com/android
parent4f30c10de7f55e435fcc9bc1762ee45421a8fe65 (diff)
parent73eb105e5bb53356e171837bd6b13b29661806e3 (diff)
downloadpackages_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.java16
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