Fix the activity leak in the Browser.
The IconListenerSet inside CombinedBookmarkHistoryActivity is static. So when
the activity is destroyed, it needs to remove its listener to avoid leak.
diff --git a/src/com/android/browser/MostVisitedActivity.java b/src/com/android/browser/MostVisitedActivity.java
index 704ee27..83342a1 100644
--- a/src/com/android/browser/MostVisitedActivity.java
+++ b/src/com/android/browser/MostVisitedActivity.java
@@ -42,12 +42,15 @@
private MyAdapter mAdapter;
+ // Instance of IconReceiver
+ private final IconReceiver mIconReceiver = new IconReceiver();
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAdapter = new MyAdapter();
CombinedBookmarkHistoryActivity.getIconListenerSet(getContentResolver())
- .addListener(new IconReceiver());
+ .addListener(mIconReceiver);
setListAdapter(mAdapter);
ListView list = getListView();
LayoutInflater factory = LayoutInflater.from(this);
@@ -57,6 +60,13 @@
list.setEmptyView(v);
}
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ CombinedBookmarkHistoryActivity.getIconListenerSet(getContentResolver())
+ .removeListener(mIconReceiver);
+ }
+
private class IconReceiver implements IconListener {
public void onReceivedIcon(String url, Bitmap icon) {
setListAdapter(mAdapter);