summaryrefslogtreecommitdiffstats
path: root/core/java/android/database
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/database')
-rw-r--r--core/java/android/database/ContentObserver.java32
-rwxr-xr-xcore/java/android/database/IContentObserver.aidl3
2 files changed, 34 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));
+ }
+ }
+
+
}
diff --git a/core/java/android/database/IContentObserver.aidl b/core/java/android/database/IContentObserver.aidl
index ac2f975..f66c29d 100755
--- a/core/java/android/database/IContentObserver.aidl
+++ b/core/java/android/database/IContentObserver.aidl
@@ -17,6 +17,8 @@
package android.database;
+import android.net.Uri;
+
/**
* @hide
*/
@@ -28,4 +30,5 @@ interface IContentObserver
* commit on the cursor that is being observed.
*/
oneway void onChange(boolean selfUpdate);
+ oneway void onChangeUri(in Uri uri, boolean selfUpdate);
}