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

# KeyEvent.DispatcherState

*** ** * ** ***

` public static class KeyEvent.DispatcherState `   
` extends https://developer.android.com/reference/java/lang/Object ` ` `

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.view.KeyEvent.DispatcherState |

<br />

*** ** * ** ***

Use with `https://developer.android.com/reference/android/view/KeyEvent#dispatch(android.view.KeyEvent.Callback,%20android.view.KeyEvent.DispatcherState,%20java.lang.Object)` for more advanced key dispatching, such as long presses.

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/view/KeyEvent.DispatcherState#DispatcherState()() ` |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/android/view/KeyEvent.DispatcherState#handleUpEvent(android.view.KeyEvent)(https://developer.android.com/reference/android/view/KeyEvent event) ` Handle key up event to stop tracking. |
| ` boolean` | ` https://developer.android.com/reference/android/view/KeyEvent.DispatcherState#isTracking(android.view.KeyEvent)(https://developer.android.com/reference/android/view/KeyEvent event) ` Return true if the key event is for a key code that is currently being tracked by the dispatcher. |
| ` void` | ` https://developer.android.com/reference/android/view/KeyEvent.DispatcherState#performedLongPress(android.view.KeyEvent)(https://developer.android.com/reference/android/view/KeyEvent event) ` Keep track of the given event's key code as having performed an action with a long press, so no action should occur on the up. |
| ` void` | ` https://developer.android.com/reference/android/view/KeyEvent.DispatcherState#reset(java.lang.Object)(https://developer.android.com/reference/java/lang/Object target) ` Stop any tracking associated with this target. |
| ` void` | ` https://developer.android.com/reference/android/view/KeyEvent.DispatcherState#reset()() ` Reset back to initial state. |
| ` void` | ` https://developer.android.com/reference/android/view/KeyEvent.DispatcherState#startTracking(android.view.KeyEvent,%20java.lang.Object)(https://developer.android.com/reference/android/view/KeyEvent event, https://developer.android.com/reference/java/lang/Object target) ` Start tracking the key code associated with the given event. |

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

### DispatcherState

```
public DispatcherState ()
```

<br />

<br />

## Public methods

### handleUpEvent

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

```
public void handleUpEvent (KeyEvent event)
```

Handle key up event to stop tracking. This resets the dispatcher state, and updates the key event state based on it.

This is only needed if you are directly dispatching events, rather than handling them in `https://developer.android.com/reference/android/view/KeyEvent.Callback#onKeyUp(int,%20android.view.KeyEvent)`.

<br />

| Parameters ||
|---|---|
| `event` | `KeyEvent` <br /> |

### isTracking

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

```
public boolean isTracking (KeyEvent event)
```

Return true if the key event is for a key code that is currently being tracked by the dispatcher.

<br />

| Parameters ||
|---|---|
| `event` | `KeyEvent` <br /> |

| Returns ||
|---|---|
| `boolean` | <br /> |

### performedLongPress

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

```
public void performedLongPress (KeyEvent event)
```

Keep track of the given event's key code as having performed an action with a long press, so no action should occur on the up.

This is only needed if you are directly dispatching events, rather than handling them in `https://developer.android.com/reference/android/view/KeyEvent.Callback#onKeyLongPress(int,%20android.view.KeyEvent)`.

<br />

| Parameters ||
|---|---|
| `event` | `KeyEvent` <br /> |

### reset

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

```
public void reset (Object target)
```

Stop any tracking associated with this target.

<br />

| Parameters ||
|---|---|
| `target` | `Object` <br /> |

### reset

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

```
public void reset ()
```

Reset back to initial state.

<br />

### startTracking

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

```
public void startTracking (KeyEvent event, 
                Object target)
```

Start tracking the key code associated with the given event. This can only be called on a key down. It will allow you to see any long press associated with the key, and will result in `https://developer.android.com/reference/android/view/KeyEvent#isTracking()` return true on the long press and up events.

This is only needed if you are directly dispatching events, rather than handling them in `https://developer.android.com/reference/android/view/KeyEvent.Callback#onKeyDown(int,%20android.view.KeyEvent)`.

<br />

| Parameters ||
|---|---|
| `event` | `KeyEvent` <br /> |
| `target` | `Object` <br /> |