diff options
Diffstat (limited to 'core/java/android/database/ContentObserver.java')
-rw-r--r-- | core/java/android/database/ContentObserver.java | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/core/java/android/database/ContentObserver.java b/core/java/android/database/ContentObserver.java index 3b829a3..f8a9a1a 100644 --- a/core/java/android/database/ContentObserver.java +++ b/core/java/android/database/ContentObserver.java @@ -17,6 +17,7 @@ package android.database; import android.os.Handler; +import android.net.Uri; /** * Receives call backs for changes to content. Must be implemented by objects which are added @@ -34,13 +35,23 @@ public abstract class ContentObserver { private final class NotificationRunnable implements Runnable { private boolean mSelf; + private Uri mUri = null; public NotificationRunnable(boolean self) { mSelf = self; } + public NotificationRunnable(Uri uri, boolean self) { + mSelf = self; + mUri = uri; + } + public void run() { - ContentObserver.this.onChange(mSelf); + if(mUri != null) { + ContentObserver.this.onChangeUri(mUri, mSelf); + } else { + ContentObserver.this.onChange(mSelf); + } } } @@ -66,6 +77,13 @@ public abstract class ContentObserver { } } + public void onChangeUri(Uri uri, boolean selfChange) { + ContentObserver contentObserver = mContentObserver; + if (contentObserver != null) { + contentObserver.dispatchChange(uri, selfChange); + } + } + public void releaseContentObserver() { mContentObserver = null; } @@ -127,6 +145,8 @@ public abstract class ContentObserver { * cursor that is being observed. */ public void onChange(boolean selfChange) {} + /** @hide */ + public void onChangeUri(Uri uri, boolean selfChange) {} public final void dispatchChange(boolean selfChange) { if (mHandler == null) { @@ -135,4 +155,14 @@ public abstract class ContentObserver { mHandler.post(new NotificationRunnable(selfChange)); } } + /** @hide */ + public final void dispatchChange(Uri uri, boolean selfChange) { + if (mHandler == null) { + onChangeUri(uri, selfChange); + } else { + mHandler.post(new NotificationRunnable(uri, selfChange)); + } + } + + } |