OSDN Git Service

Fixing provider status observer
authorDmitri Plotnikov <dplotnikov@google.com>
Tue, 16 Mar 2010 01:41:58 +0000 (18:41 -0700)
committerDmitri Plotnikov <dplotnikov@google.com>
Tue, 16 Mar 2010 01:41:58 +0000 (18:41 -0700)
It needs to be unregistered onPause and reregistered onResume

Change-Id: I18f2fe0d013c560e92298ba7634e1dacc2cd7e93

src/com/android/contacts/ContactsListActivity.java

index 4a35287..28c5502 100644 (file)
@@ -544,12 +544,18 @@ public class ContactsListActivity extends ListActivity implements View.OnCreateC
      */
     private int mPinnedHeaderBackgroundColor;
 
+    private ContentObserver mProviderStatusObserver = new ContentObserver(new Handler()) {
+
+        @Override
+        public void onChange(boolean selfChange) {
+            checkProviderState(true);
+        }
+    };
+
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
-        registerProviderStatusObserver();
-
         mIconSize = getResources().getDimensionPixelSize(android.R.dimen.app_icon_size);
         mContactsPrefs = new ContactsPreferences(this);
         mPhotoLoader = new ContactPhotoLoader(this, R.drawable.ic_contact_list_picture);
@@ -841,13 +847,15 @@ public class ContactsListActivity extends ListActivity implements View.OnCreateC
      */
     private void registerProviderStatusObserver() {
         getContentResolver().registerContentObserver(ProviderStatus.CONTENT_URI,
-                false, new ContentObserver(new Handler()){
+                false, mProviderStatusObserver);
+    }
 
-            @Override
-            public void onChange(boolean selfChange) {
-                checkProviderState(true);
-            }
-        });
+    /**
+     * Register an observer for provider status changes - we will need to
+     * reflect them in the UI.
+     */
+    private void unregisterProviderStatusObserver() {
+        getContentResolver().unregisterContentObserver(mProviderStatusObserver);
     }
 
     private void setupListView() {
@@ -994,9 +1002,16 @@ public class ContactsListActivity extends ListActivity implements View.OnCreateC
     }
 
     @Override
+    protected void onPause() {
+        super.onPause();
+        unregisterProviderStatusObserver();
+    }
+
+    @Override
     protected void onResume() {
         super.onResume();
 
+        registerProviderStatusObserver();
         mPhotoLoader.resume();
 
         Activity parent = getParent();