Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Ctors](https://developer.android.com/reference/java/util/Observable#pubctors) \| [Methods](https://developer.android.com/reference/java/util/Observable#pubmethods) \| [Protected Methods](https://developer.android.com/reference/java/util/Observable#promethods) \| [Inherited Methods](https://developer.android.com/reference/java/util/Observable#inhmethods)

# Observable


`
public


class
Observable
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


`

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

|---|
| Known direct subclasses [ContentQueryMap](https://developer.android.com/reference/android/content/ContentQueryMap) |---|---| | [ContentQueryMap](https://developer.android.com/reference/android/content/ContentQueryMap) | Caches the contents of a cursor into a Map of String-\>ContentValues and optionally keeps the cache fresh by registering for updates on the content backing the cursor. | |

<br />

*** ** * ** ***


**This class was deprecated
in API level 33.**   

This class and the `https://developer.android.com/reference/java/util/Observer` interface have been deprecated.
The event model supported by `Observer` and `Observable`
is quite limited, the order of notifications delivered by
`Observable` is unspecified, and state changes are not in
one-for-one correspondence with notifications.
For a richer event model, consider using the
`https://developer.android.com/reference/java/beans/package-summary` package. For reliable and ordered
messaging among threads, consider using one of the concurrent data
structures in the `https://developer.android.com/reference/java/util/concurrent/package-summary` package.
For reactive streams style programming, see the
`https://developer.android.com/reference/java/util/concurrent/Flow` API.

This class represents an observable object, or "data"
in the model-view paradigm. It can be subclassed to represent an
object that the application wants to have observed.


An observable object can have one or more observers. An observer
may be any object that implements interface `Observer`. After an
observable instance changes, an application calling the
`Observable`'s `notifyObservers` method
causes all of its observers to be notified of the change by a call
to their `update` method.


The order in which notifications will be delivered is unspecified.
The default implementation provided in the Observable class will
notify Observers in the order in which they registered interest, but
subclasses may change this order, use no guaranteed order, deliver
notifications on separate threads, or may guarantee that their
subclass follows this order, as they choose.


Note that this notification mechanism has nothing to do with threads
and is completely separate from the `wait` and `notify`
mechanism of class `Object`.


When an observable object is newly created, its set of observers is
empty. Two observers are considered the same if and only if the
`equals` method returns true for them.
**See also:**

- `https://developer.android.com/reference/java/util/Observable#notifyObservers()`
- `https://developer.android.com/reference/java/util/Observable#notifyObservers(java.lang.Object)`
- `https://developer.android.com/reference/java/util/Observer`
- `https://developer.android.com/reference/java/util/Observer#update(java.util.Observable,%20java.lang.Object)`

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/java/util/Observable#Observable()() ` Construct an Observable with zero Observers. |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/java/util/Observable#addObserver(java.util.Observer)(https://developer.android.com/reference/java/util/Observer o) ` Adds an observer to the set of observers for this object, provided that it is not the same as some observer already in the set. |
| ` int` | ` https://developer.android.com/reference/java/util/Observable#countObservers()() ` Returns the number of observers of this `Observable` object. |
| ` void` | ` https://developer.android.com/reference/java/util/Observable#deleteObserver(java.util.Observer)(https://developer.android.com/reference/java/util/Observer o) ` Deletes an observer from the set of observers of this object. |
| ` void` | ` https://developer.android.com/reference/java/util/Observable#deleteObservers()() ` Clears the observer list so that this object no longer has any observers. |
| ` boolean` | ` https://developer.android.com/reference/java/util/Observable#hasChanged()() ` Tests if this object has changed. |
| ` void` | ` https://developer.android.com/reference/java/util/Observable#notifyObservers(java.lang.Object)(https://developer.android.com/reference/java/lang/Object arg) ` If this object has changed, as indicated by the `hasChanged` method, then notify all of its observers and then call the `clearChanged` method to indicate that this object has no longer changed. |
| ` void` | ` https://developer.android.com/reference/java/util/Observable#notifyObservers()() ` If this object has changed, as indicated by the `hasChanged` method, then notify all of its observers and then call the `clearChanged` method to indicate that this object has no longer changed. |

| ### Protected methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/java/util/Observable#clearChanged()() ` Indicates that this object has no longer changed, or that it has already notified all of its observers of its most recent change, so that the `hasChanged` method will now return `false`. |
| ` void` | ` https://developer.android.com/reference/java/util/Observable#setChanged()() ` Marks this `Observable` object as having been changed; the `hasChanged` method will now return `true`. |

| ### 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

### Observable

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

```
public Observable ()
```

Construct an Observable with zero Observers.

<br />

## Public methods

### addObserver

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

```
public void addObserver (Observer o)
```

Adds an observer to the set of observers for this object, provided
that it is not the same as some observer already in the set.
The order in which notifications will be delivered to multiple
observers is not specified. See the class comment.

<br />

| Parameters ||
|---|---|
| `o` | `Observer`: an observer to be added. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/NullPointerException` | if the parameter o is null. |

### countObservers

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

```
public int countObservers ()
```

Returns the number of observers of this `Observable` object.

<br />

| Returns ||
|---|---|
| `int` | the number of observers of this object. <br /> |

### deleteObserver

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

```
public void deleteObserver (Observer o)
```

Deletes an observer from the set of observers of this object.
Passing `null` to this method will have no effect.

<br />

| Parameters ||
|---|---|
| `o` | `Observer`: the observer to be deleted. <br /> |

### deleteObservers

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

```
public void deleteObservers ()
```

Clears the observer list so that this object no longer has any observers.

<br />

### hasChanged

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

```
public boolean hasChanged ()
```

Tests if this object has changed.

<br />

| Returns ||
|---|---|
| `boolean` | `true` if and only if the `setChanged` method has been called more recently than the `clearChanged` method on this object; `false` otherwise. <br /> |

**See also:**

- `https://developer.android.com/reference/java/util/Observable#clearChanged()`
- `https://developer.android.com/reference/java/util/Observable#setChanged()`

### notifyObservers

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

```
public void notifyObservers (Object arg)
```

If this object has changed, as indicated by the
`hasChanged` method, then notify all of its observers
and then call the `clearChanged` method to indicate
that this object has no longer changed.


Each observer has its `update` method called with two
arguments: this observable object and the `arg` argument.

<br />

| Parameters ||
|---|---|
| `arg` | `Object`: any object. <br /> |

**See also:**

- `https://developer.android.com/reference/java/util/Observable#clearChanged()`
- `https://developer.android.com/reference/java/util/Observable#hasChanged()`
- `https://developer.android.com/reference/java/util/Observer#update(java.util.Observable,%20java.lang.Object)`

### notifyObservers

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

```
public void notifyObservers ()
```

If this object has changed, as indicated by the
`hasChanged` method, then notify all of its observers
and then call the `clearChanged` method to
indicate that this object has no longer changed.


Each observer has its `update` method called with two
arguments: this observable object and `null`. In other
words, this method is equivalent to:
> `notifyObservers(null)`

<br />

<br />

**See also:**

- `https://developer.android.com/reference/java/util/Observable#clearChanged()`
- `https://developer.android.com/reference/java/util/Observable#hasChanged()`
- `https://developer.android.com/reference/java/util/Observer#update(java.util.Observable,%20java.lang.Object)`

## Protected methods

### clearChanged

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

```
protected void clearChanged ()
```

Indicates that this object has no longer changed, or that it has
already notified all of its observers of its most recent change,
so that the `hasChanged` method will now return `false`.
This method is called automatically by the
`notifyObservers` methods.

<br />

**See also:**

- `https://developer.android.com/reference/java/util/Observable#notifyObservers()`
- `https://developer.android.com/reference/java/util/Observable#notifyObservers(java.lang.Object)`

### setChanged

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

```
protected void setChanged ()
```

Marks this `Observable` object as having been changed; the
`hasChanged` method will now return `true`.

<br />