Merge "Slow widget memory leak." into honeycomb
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 @@
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 @@
@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