am b8a9cb0e: Fix the activity leak in the Browser.

Merge commit 'b8a9cb0e2b3b2a1bb250853a79b8ea2046ff3d6e' into eclair

* commit 'b8a9cb0e2b3b2a1bb250853a79b8ea2046ff3d6e':
  Fix the activity leak in the Browser.
diff --git a/src/com/android/browser/BrowserHistoryPage.java b/src/com/android/browser/BrowserHistoryPage.java
index 6402422..c130a79 100644
--- a/src/com/android/browser/BrowserHistoryPage.java
+++ b/src/com/android/browser/BrowserHistoryPage.java
@@ -140,6 +140,13 @@
     }
 
     @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        CombinedBookmarkHistoryActivity.getIconListenerSet(getContentResolver())
+                .removeListener(mIconReceiver);
+    }
+
+    @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         super.onCreateOptionsMenu(menu);
         MenuInflater inflater = getMenuInflater();
diff --git a/src/com/android/browser/CombinedBookmarkHistoryActivity.java b/src/com/android/browser/CombinedBookmarkHistoryActivity.java
index 6090f89..efe6292 100644
--- a/src/com/android/browser/CombinedBookmarkHistoryActivity.java
+++ b/src/com/android/browser/CombinedBookmarkHistoryActivity.java
@@ -68,6 +68,9 @@
         public void addListener(IconListener listener) {
             mListeners.add(listener);
         }
+        public void removeListener(IconListener listener) {
+            mListeners.remove(listener);
+        }
         public Bitmap getFavicon(String url) {
             return (Bitmap) mUrlsToIcons.get(url);
         }
diff --git a/src/com/android/browser/MostVisitedActivity.java b/src/com/android/browser/MostVisitedActivity.java
index 90052d3..65cb89f 100644
--- a/src/com/android/browser/MostVisitedActivity.java
+++ b/src/com/android/browser/MostVisitedActivity.java
@@ -43,12 +43,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();
         View v = new ViewStub(this, R.layout.empty_history);
@@ -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);