Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Ctors](https://developer.android.com/reference/android/database/ContentObserver#pubctors) \| [Methods](https://developer.android.com/reference/android/database/ContentObserver#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/database/ContentObserver#inhmethods)

# ContentObserver

*** ** * ** ***

` public abstract class ContentObserver `   
` extends https://developer.android.com/reference/java/lang/Object ` ` `

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.database.ContentObserver |

Known direct subclasses [AbstractCursor.SelfContentObserver](https://developer.android.com/reference/android/database/AbstractCursor.SelfContentObserver), [Loader.ForceLoadContentObserver](https://developer.android.com/reference/android/content/Loader.ForceLoadContentObserver) [AbstractCursor.SelfContentObserver](https://developer.android.com/reference/android/database/AbstractCursor.SelfContentObserver) Cursors use this class to track changes others make to their URI. [Loader.ForceLoadContentObserver](https://developer.android.com/reference/android/content/Loader.ForceLoadContentObserver) *This class was deprecated in API level 28. Use `https://developer.android.com/reference/androidx/loader/content/Loader.ForceLoadContentObserver.html`*   

*** ** * ** ***

Receives call backs for changes to content. Must be implemented by objects which are added to a `https://developer.android.com/reference/android/database/ContentObservable`.

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/database/ContentObserver#ContentObserver(android.os.Handler)(https://developer.android.com/reference/android/os/Handler handler) ` Creates a content observer. |

| ### Public methods ||
|---|---|
| ` boolean` | ` https://developer.android.com/reference/android/database/ContentObserver#deliverSelfNotifications()() ` Returns true if this observer is interested receiving self-change notifications. |
| ` final void` | ` https://developer.android.com/reference/android/database/ContentObserver#dispatchChange(boolean)(boolean selfChange) ` *This method was deprecated in API level 16. Callers should migrate towards using a richer overload that provides more details about the change, such as `https://developer.android.com/reference/android/database/ContentObserver#dispatchChange(boolean,%20java.util.Collection<android.net.Uri>,%20int)`.* |
| ` final void` | ` https://developer.android.com/reference/android/database/ContentObserver#dispatchChange(boolean,%20android.net.Uri)(boolean selfChange, https://developer.android.com/reference/android/net/Uri uri) ` Dispatches a change notification to the observer. |
| ` final void` | ` https://developer.android.com/reference/android/database/ContentObserver#dispatchChange(boolean,%20android.net.Uri,%20int)(boolean selfChange, https://developer.android.com/reference/android/net/Uri uri, int flags) ` Dispatches a change notification to the observer. |
| ` final void` | ` https://developer.android.com/reference/android/database/ContentObserver#dispatchChange(boolean,%20java.util.Collection<android.net.Uri>,%20int)(boolean selfChange, https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/android/net/Uri> uris, int flags) ` Dispatches a change notification to the observer. |
| ` void` | ` https://developer.android.com/reference/android/database/ContentObserver#onChange(boolean,%20android.net.Uri,%20int)(boolean selfChange, https://developer.android.com/reference/android/net/Uri uri, int flags) ` This method is called when a content change occurs. |
| ` void` | ` https://developer.android.com/reference/android/database/ContentObserver#onChange(boolean)(boolean selfChange) ` This method is called when a content change occurs. |
| ` void` | ` https://developer.android.com/reference/android/database/ContentObserver#onChange(boolean,%20android.net.Uri)(boolean selfChange, https://developer.android.com/reference/android/net/Uri uri) ` This method is called when a content change occurs. |
| ` void` | ` https://developer.android.com/reference/android/database/ContentObserver#onChange(boolean,%20java.util.Collection<android.net.Uri>,%20int)(boolean selfChange, https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/android/net/Uri> uris, int flags) ` This method is called when a content change occurs. |

### Inherited methods

From class ` https://developer.android.com/reference/java/lang/Object ` ` https://developer.android.com/reference/java/lang/Object` ` https://developer.android.com/reference/java/lang/Object#clone()() `

Creates and returns a copy of this object.
` boolean` ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) `

Indicates whether some other object is "equal to" this one.
` void` ` https://developer.android.com/reference/java/lang/Object#finalize()() `

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
` final https://developer.android.com/reference/java/lang/Class<?>` ` https://developer.android.com/reference/java/lang/Object#getClass()() `

Returns the runtime class of this `Object`.
` int` ` https://developer.android.com/reference/java/lang/Object#hashCode()() `

Returns a hash code value for the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#notify()() `

Wakes up a single thread that is waiting on this object's monitor.
` final void` ` https://developer.android.com/reference/java/lang/Object#notifyAll()() `

Wakes up all threads that are waiting on this object's monitor.
` https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/java/lang/Object#toString()() `

Returns a string representation of the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait()() `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*.

## Public constructors

### ContentObserver

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ContentObserver (Handler handler)
```

Creates a content observer.

<br />

| Parameters ||
|---|---|
| `handler` | `Handler`: The handler to run `https://developer.android.com/reference/android/database/ContentObserver#onChange(boolean)` on, or null if none. <br /> |

## Public methods

### deliverSelfNotifications

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean deliverSelfNotifications ()
```

Returns true if this observer is interested receiving self-change notifications. Subclasses should override this method to indicate whether the observer is interested in receiving notifications for changes that it made to the content itself.

<br />

| Returns ||
|---|---|
| `boolean` | True if self-change notifications should be delivered to the observer. <br /> |

### dispatchChange

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public final void dispatchChange (boolean selfChange)
```

<br />

**This method was deprecated in API level 16.**   

Callers should migrate towards using a richer overload that provides more details about the change, such as `https://developer.android.com/reference/android/database/ContentObserver#dispatchChange(boolean,%20java.util.Collection<android.net.Uri>,%20int)`.

Dispatches a change notification to the observer.

If a `https://developer.android.com/reference/android/os/Handler` was supplied to the `https://developer.android.com/reference/android/database/ContentObserver` constructor, then a call to the `https://developer.android.com/reference/android/database/ContentObserver#onChange(boolean)` method is posted to the handler's message queue. Otherwise, the `https://developer.android.com/reference/android/database/ContentObserver#onChange(boolean)` method is invoked immediately on this thread.

<br />

| Parameters ||
|---|---|
| `selfChange` | `boolean` <br /> |

### dispatchChange

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public final void dispatchChange (boolean selfChange, 
                Uri uri)
```

Dispatches a change notification to the observer. Includes the changed content Uri when available.

If a `https://developer.android.com/reference/android/os/Handler` was supplied to the `https://developer.android.com/reference/android/database/ContentObserver` constructor, then a call to the `https://developer.android.com/reference/android/database/ContentObserver#onChange(boolean)` method is posted to the handler's message queue. Otherwise, the `https://developer.android.com/reference/android/database/ContentObserver#onChange(boolean)` method is invoked immediately on this thread.

<br />

| Parameters ||
|---|---|
| `selfChange` | `boolean`: True if this is a self-change notification. <br /> |
| `uri` | `Uri`: The Uri of the changed content. This value may be `null`. <br /> |

### dispatchChange

Added in [API level 30](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public final void dispatchChange (boolean selfChange, 
                Uri uri, 
                int flags)
```

Dispatches a change notification to the observer. Includes the changed content Uri when available.

If a `https://developer.android.com/reference/android/os/Handler` was supplied to the `https://developer.android.com/reference/android/database/ContentObserver` constructor, then a call to the `https://developer.android.com/reference/android/database/ContentObserver#onChange(boolean)` method is posted to the handler's message queue. Otherwise, the `https://developer.android.com/reference/android/database/ContentObserver#onChange(boolean)` method is invoked immediately on this thread.

<br />

| Parameters ||
|---|---|
| `selfChange` | `boolean`: True if this is a self-change notification. <br /> |
| `uri` | `Uri`: The Uri of the changed content. This value may be `null`. <br /> |
| `flags` | `int`: Flags indicating details about this change. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_SYNC_TO_NETWORK` - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_SKIP_NOTIFY_FOR_DESCENDANTS` - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_INSERT` - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_UPDATE` - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_DELETE` |

### dispatchChange

Added in [API level 30](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public final void dispatchChange (boolean selfChange, 
                Collection<Uri> uris, 
                int flags)
```

Dispatches a change notification to the observer. Includes the changed content Uris when available.

If a `https://developer.android.com/reference/android/os/Handler` was supplied to the `https://developer.android.com/reference/android/database/ContentObserver` constructor, then a call to the `https://developer.android.com/reference/android/database/ContentObserver#onChange(boolean)` method is posted to the handler's message queue. Otherwise, the `https://developer.android.com/reference/android/database/ContentObserver#onChange(boolean)` method is invoked immediately on this thread.

<br />

| Parameters ||
|---|---|
| `selfChange` | `boolean`: True if this is a self-change notification. <br /> |
| `uris` | `Collection`: The Uri of the changed content. This value cannot be `null`. <br /> |
| `flags` | `int`: Flags indicating details about this change. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_SYNC_TO_NETWORK` - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_SKIP_NOTIFY_FOR_DESCENDANTS` - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_INSERT` - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_UPDATE` - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_DELETE` |

### onChange

Added in [API level 30](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onChange (boolean selfChange, 
                Uri uri, 
                int flags)
```

This method is called when a content change occurs. Includes the changed content Uri when available.

Subclasses should override this method to handle content changes. To ensure correct operation on older versions of the framework that did not provide richer arguments, applications should implement all overloads.

<br />

| Parameters ||
|---|---|
| `selfChange` | `boolean`: True if this is a self-change notification. <br /> |
| `uri` | `Uri`: The Uri of the changed content. This value may be `null`. <br /> |
| `flags` | `int`: Flags indicating details about this change. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_SYNC_TO_NETWORK` - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_SKIP_NOTIFY_FOR_DESCENDANTS` - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_INSERT` - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_UPDATE` - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_DELETE` |

### onChange

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onChange (boolean selfChange)
```

This method is called when a content change occurs.

Subclasses should override this method to handle content changes.

<br />

<br />

| Parameters ||
|---|---|
| `selfChange` | `boolean`: True if this is a self-change notification. <br /> |

### onChange

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onChange (boolean selfChange, 
                Uri uri)
```

This method is called when a content change occurs. Includes the changed content Uri when available.

Subclasses should override this method to handle content changes. To ensure correct operation on older versions of the framework that did not provide richer arguments, applications should implement all overloads.

Example implementation:

    // Implement the onChange(boolean) method to delegate the change notification to
    // the onChange(boolean, Uri) method to ensure correct operation on older versions
    // of the framework that did not have the onChange(boolean, Uri) method.
    @Override
    public void onChange(boolean selfChange) {
        onChange(selfChange, null);
    }

    // Implement the onChange(boolean, Uri) method to take advantage of the new Uri argument.
    @Override
    public void onChange(boolean selfChange, Uri uri) {
        // Handle change.
    }

<br />

<br />

<br />

| Parameters ||
|---|---|
| `selfChange` | `boolean`: True if this is a self-change notification. <br /> |
| `uri` | `Uri`: The Uri of the changed content. This value may be `null`. <br /> |

### onChange

Added in [API level 30](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onChange (boolean selfChange, 
                Collection<Uri> uris, 
                int flags)
```

This method is called when a content change occurs. Includes the changed content Uris when available.

Subclasses should override this method to handle content changes. To ensure correct operation on older versions of the framework that did not provide richer arguments, applications should implement all overloads.

<br />

| Parameters ||
|---|---|
| `selfChange` | `boolean`: True if this is a self-change notification. <br /> |
| `uris` | `Collection`: The Uris of the changed content. This value cannot be `null`. <br /> |
| `flags` | `int`: Flags indicating details about this change. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_SYNC_TO_NETWORK` - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_SKIP_NOTIFY_FOR_DESCENDANTS` - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_INSERT` - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_UPDATE` - `https://developer.android.com/reference/android/content/ContentResolver#NOTIFY_DELETE` |