Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Nested Classes](https://developer.android.com/reference/android/content/AsyncQueryHandler#nestedclasses) \| [Ctors](https://developer.android.com/reference/android/content/AsyncQueryHandler#pubctors) \| [Methods](https://developer.android.com/reference/android/content/AsyncQueryHandler#pubmethods) \| [Protected Methods](https://developer.android.com/reference/android/content/AsyncQueryHandler#promethods) \| [Inherited Methods](https://developer.android.com/reference/android/content/AsyncQueryHandler#inhmethods)

# AsyncQueryHandler

*** ** * ** ***

` public abstract class AsyncQueryHandler `   
` ` ` extends https://developer.android.com/reference/android/os/Handler ` ` `

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) |||
| ↳ | [android.os.Handler](https://developer.android.com/reference/android/os/Handler) ||
|   | ↳ | android.content.AsyncQueryHandler |

<br />

*** ** * ** ***

A helper class to help make handling asynchronous `https://developer.android.com/reference/android/content/ContentResolver` queries easier.

## Summary

| ### Nested classes ||
|---|---|
| ` class` | `https://developer.android.com/reference/android/content/AsyncQueryHandler.WorkerArgs` |
| ` class` | `https://developer.android.com/reference/android/content/AsyncQueryHandler.WorkerHandler` |

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/content/AsyncQueryHandler#AsyncQueryHandler(android.content.ContentResolver)(https://developer.android.com/reference/android/content/ContentResolver cr) ` |

| ### Public methods ||
|---|---|
| ` final void` | ` https://developer.android.com/reference/android/content/AsyncQueryHandler#cancelOperation(int)(int token) ` Attempts to cancel operation that has not already started. |
| ` void` | ` https://developer.android.com/reference/android/content/AsyncQueryHandler#handleMessage(android.os.Message)(https://developer.android.com/reference/android/os/Message msg) ` Subclasses must implement this to receive messages. |
| ` final void` | ` https://developer.android.com/reference/android/content/AsyncQueryHandler#startDelete(int,%20java.lang.Object,%20android.net.Uri,%20java.lang.String,%20java.lang.String[])(int token, https://developer.android.com/reference/java/lang/Object cookie, https://developer.android.com/reference/android/net/Uri uri, https://developer.android.com/reference/java/lang/String selection, https://developer.android.com/reference/java/lang/String selectionArgs) ` This method begins an asynchronous delete. |
| ` final void` | ` https://developer.android.com/reference/android/content/AsyncQueryHandler#startInsert(int,%20java.lang.Object,%20android.net.Uri,%20android.content.ContentValues)(int token, https://developer.android.com/reference/java/lang/Object cookie, https://developer.android.com/reference/android/net/Uri uri, https://developer.android.com/reference/android/content/ContentValues initialValues) ` This method begins an asynchronous insert. |
| ` void` | ` https://developer.android.com/reference/android/content/AsyncQueryHandler#startQuery(int,%20java.lang.Object,%20android.net.Uri,%20java.lang.String[],%20java.lang.String,%20java.lang.String[],%20java.lang.String)(int token, https://developer.android.com/reference/java/lang/Object cookie, https://developer.android.com/reference/android/net/Uri uri, https://developer.android.com/reference/java/lang/String projection, https://developer.android.com/reference/java/lang/String selection, https://developer.android.com/reference/java/lang/String selectionArgs, https://developer.android.com/reference/java/lang/String orderBy) ` This method begins an asynchronous query. |
| ` final void` | ` https://developer.android.com/reference/android/content/AsyncQueryHandler#startUpdate(int,%20java.lang.Object,%20android.net.Uri,%20android.content.ContentValues,%20java.lang.String,%20java.lang.String[])(int token, https://developer.android.com/reference/java/lang/Object cookie, https://developer.android.com/reference/android/net/Uri uri, https://developer.android.com/reference/android/content/ContentValues values, https://developer.android.com/reference/java/lang/String selection, https://developer.android.com/reference/java/lang/String selectionArgs) ` This method begins an asynchronous update. |

| ### Protected methods ||
|---|---|
| ` https://developer.android.com/reference/android/os/Handler` | ` https://developer.android.com/reference/android/content/AsyncQueryHandler#createHandler(android.os.Looper)(https://developer.android.com/reference/android/os/Looper looper) ` |
| ` void` | ` https://developer.android.com/reference/android/content/AsyncQueryHandler#onDeleteComplete(int,%20java.lang.Object,%20int)(int token, https://developer.android.com/reference/java/lang/Object cookie, int result) ` Called when an asynchronous delete is completed. |
| ` void` | ` https://developer.android.com/reference/android/content/AsyncQueryHandler#onInsertComplete(int,%20java.lang.Object,%20android.net.Uri)(int token, https://developer.android.com/reference/java/lang/Object cookie, https://developer.android.com/reference/android/net/Uri uri) ` Called when an asynchronous insert is completed. |
| ` void` | ` https://developer.android.com/reference/android/content/AsyncQueryHandler#onQueryComplete(int,%20java.lang.Object,%20android.database.Cursor)(int token, https://developer.android.com/reference/java/lang/Object cookie, https://developer.android.com/reference/android/database/Cursor cursor) ` Called when an asynchronous query is completed. |
| ` void` | ` https://developer.android.com/reference/android/content/AsyncQueryHandler#onUpdateComplete(int,%20java.lang.Object,%20int)(int token, https://developer.android.com/reference/java/lang/Object cookie, int result) ` Called when an asynchronous update is completed. |

### Inherited methods

From class ` https://developer.android.com/reference/android/os/Handler ` ` static https://developer.android.com/reference/android/os/Handler` ` https://developer.android.com/reference/android/os/Handler#createAsync(android.os.Looper,%20android.os.Handler.Callback)(https://developer.android.com/reference/android/os/Looper looper, https://developer.android.com/reference/android/os/Handler.Callback callback) `

Create a new Handler whose posted messages and runnables are not subject to synchronization barriers such as display vsync.
` static https://developer.android.com/reference/android/os/Handler` ` https://developer.android.com/reference/android/os/Handler#createAsync(android.os.Looper)(https://developer.android.com/reference/android/os/Looper looper) `

Create a new Handler whose posted messages and runnables are not subject to synchronization barriers such as display vsync.
` void` ` https://developer.android.com/reference/android/os/Handler#dispatchMessage(android.os.Message)(https://developer.android.com/reference/android/os/Message msg) `

Handle system messages here.
` final void` ` https://developer.android.com/reference/android/os/Handler#dump(android.util.Printer,%20java.lang.String)(https://developer.android.com/reference/android/util/Printer pw, https://developer.android.com/reference/java/lang/String prefix) ` ` final https://developer.android.com/reference/android/os/Looper` ` https://developer.android.com/reference/android/os/Handler#getLooper()() ` ` https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/android/os/Handler#getMessageName(android.os.Message)(https://developer.android.com/reference/android/os/Message message) `

Returns a string representing the name of the specified message.
` void` ` https://developer.android.com/reference/android/os/Handler#handleMessage(android.os.Message)(https://developer.android.com/reference/android/os/Message msg) `

Subclasses must implement this to receive messages.
` final boolean` ` https://developer.android.com/reference/android/os/Handler#hasCallbacks(java.lang.Runnable)(https://developer.android.com/reference/java/lang/Runnable r) `

Check if there are any pending posts of messages with callback r in the message queue.
` final boolean` ` https://developer.android.com/reference/android/os/Handler#hasMessages(int)(int what) `

Check if there are any pending posts of messages with code 'what' in the message queue.
` final boolean` ` https://developer.android.com/reference/android/os/Handler#hasMessages(int,%20java.lang.Object)(int what, https://developer.android.com/reference/java/lang/Object object) `

Check if there are any pending posts of messages with code 'what' and whose obj is 'object' in the message queue.
` final https://developer.android.com/reference/android/os/Message` ` https://developer.android.com/reference/android/os/Handler#obtainMessage(int,%20java.lang.Object)(int what, https://developer.android.com/reference/java/lang/Object obj) `

Same as `https://developer.android.com/reference/android/os/Handler#obtainMessage()`, except that it also sets the what and obj members of the returned Message.
` final https://developer.android.com/reference/android/os/Message` ` https://developer.android.com/reference/android/os/Handler#obtainMessage()() `

Returns a new `https://developer.android.com/reference/android/os/Message` from the global message pool.
` final https://developer.android.com/reference/android/os/Message` ` https://developer.android.com/reference/android/os/Handler#obtainMessage(int,%20int,%20int)(int what, int arg1, int arg2) `

Same as `https://developer.android.com/reference/android/os/Handler#obtainMessage()`, except that it also sets the what, arg1 and arg2 members of the returned Message.
` final https://developer.android.com/reference/android/os/Message` ` https://developer.android.com/reference/android/os/Handler#obtainMessage(int,%20int,%20int,%20java.lang.Object)(int what, int arg1, int arg2, https://developer.android.com/reference/java/lang/Object obj) `

Same as `https://developer.android.com/reference/android/os/Handler#obtainMessage()`, except that it also sets the what, obj, arg1,and arg2 values on the returned Message.
` final https://developer.android.com/reference/android/os/Message` ` https://developer.android.com/reference/android/os/Handler#obtainMessage(int)(int what) `

Same as `https://developer.android.com/reference/android/os/Handler#obtainMessage()`, except that it also sets the what member of the returned Message.
` final boolean` ` https://developer.android.com/reference/android/os/Handler#post(java.lang.Runnable)(https://developer.android.com/reference/java/lang/Runnable r) `

Causes the Runnable r to be added to the message queue.
` final boolean` ` https://developer.android.com/reference/android/os/Handler#postAtFrontOfQueue(java.lang.Runnable)(https://developer.android.com/reference/java/lang/Runnable r) `

Posts a message to an object that implements Runnable.
` final boolean` ` https://developer.android.com/reference/android/os/Handler#postAtTime(java.lang.Runnable,%20long)(https://developer.android.com/reference/java/lang/Runnable r, long uptimeMillis) `

Causes the Runnable r to be added to the message queue, to be run at a specific time given by <var translate="no">uptimeMillis</var>.
` final boolean` ` https://developer.android.com/reference/android/os/Handler#postAtTime(java.lang.Runnable,%20java.lang.Object,%20long)(https://developer.android.com/reference/java/lang/Runnable r, https://developer.android.com/reference/java/lang/Object token, long uptimeMillis) `

Causes the Runnable r to be added to the message queue, to be run at a specific time given by <var translate="no">uptimeMillis</var>.
` final boolean` ` https://developer.android.com/reference/android/os/Handler#postDelayed(java.lang.Runnable,%20long)(https://developer.android.com/reference/java/lang/Runnable r, long delayMillis) `

Causes the Runnable r to be added to the message queue, to be run after the specified amount of time elapses.
` final boolean` ` https://developer.android.com/reference/android/os/Handler#postDelayed(java.lang.Runnable,%20java.lang.Object,%20long)(https://developer.android.com/reference/java/lang/Runnable r, https://developer.android.com/reference/java/lang/Object token, long delayMillis) `

Causes the Runnable r to be added to the message queue, to be run after the specified amount of time elapses.
` final void` ` https://developer.android.com/reference/android/os/Handler#removeCallbacks(java.lang.Runnable)(https://developer.android.com/reference/java/lang/Runnable r) `

Remove any pending posts of Runnable r that are in the message queue.
` final void` ` https://developer.android.com/reference/android/os/Handler#removeCallbacks(java.lang.Runnable,%20java.lang.Object)(https://developer.android.com/reference/java/lang/Runnable r, https://developer.android.com/reference/java/lang/Object token) `

Remove any pending posts of Runnable <var translate="no">r</var> with Object <var translate="no">token</var> that are in the message queue.
` final void` ` https://developer.android.com/reference/android/os/Handler#removeCallbacksAndMessages(java.lang.Object)(https://developer.android.com/reference/java/lang/Object token) `

Remove any pending posts of callbacks and sent messages whose <var translate="no">obj</var> is <var translate="no">token</var>.
` final void` ` https://developer.android.com/reference/android/os/Handler#removeMessages(int)(int what) `

Remove any pending posts of messages with code 'what' that are in the message queue.
` final void` ` https://developer.android.com/reference/android/os/Handler#removeMessages(int,%20java.lang.Object)(int what, https://developer.android.com/reference/java/lang/Object object) `

Remove any pending posts of messages with code 'what' and whose obj is 'object' that are in the message queue.
` final boolean` ` https://developer.android.com/reference/android/os/Handler#sendEmptyMessage(int)(int what) `

Sends a Message containing only the what value.
` final boolean` ` https://developer.android.com/reference/android/os/Handler#sendEmptyMessageAtTime(int,%20long)(int what, long uptimeMillis) `

Sends a Message containing only the what value, to be delivered at a specific time.
` final boolean` ` https://developer.android.com/reference/android/os/Handler#sendEmptyMessageDelayed(int,%20long)(int what, long delayMillis) `

Sends a Message containing only the what value, to be delivered after the specified amount of time elapses.
` final boolean` ` https://developer.android.com/reference/android/os/Handler#sendMessage(android.os.Message)(https://developer.android.com/reference/android/os/Message msg) `

Pushes a message onto the end of the message queue after all pending messages before the current time.
` final boolean` ` https://developer.android.com/reference/android/os/Handler#sendMessageAtFrontOfQueue(android.os.Message)(https://developer.android.com/reference/android/os/Message msg) `

Enqueue a message at the front of the message queue, to be processed on the next iteration of the message loop.
` boolean` ` https://developer.android.com/reference/android/os/Handler#sendMessageAtTime(android.os.Message,%20long)(https://developer.android.com/reference/android/os/Message msg, long uptimeMillis) `

Enqueue a message into the message queue after all pending messages before the absolute time (in milliseconds) <var translate="no">uptimeMillis</var>.
` final boolean` ` https://developer.android.com/reference/android/os/Handler#sendMessageDelayed(android.os.Message,%20long)(https://developer.android.com/reference/android/os/Message msg, long delayMillis) `

Enqueue a message into the message queue after all pending messages before (current time + delayMillis).
` https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/android/os/Handler#toString()() `

Returns a string representation of the object.
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

### AsyncQueryHandler

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

```
public AsyncQueryHandler (ContentResolver cr)
```

<br />

<br />

| Parameters ||
|---|---|
| `cr` | `ContentResolver` <br /> |

## Public methods

### cancelOperation

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

```
public final void cancelOperation (int token)
```

Attempts to cancel operation that has not already started. Note that there is no guarantee that the operation will be canceled. They still may result in a call to on\[Query/Insert/Update/Delete\]Complete after this call has completed.

<br />

| Parameters ||
|---|---|
| `token` | `int`: The token representing the operation to be canceled. If multiple operations have the same token they will all be canceled. <br /> |

### handleMessage

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

```
public void handleMessage (Message msg)
```

Subclasses must implement this to receive messages.

<br />

| Parameters ||
|---|---|
| `msg` | `Message`: This value cannot be `null`. <br /> |

### startDelete

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

```
public final void startDelete (int token, 
                Object cookie, 
                Uri uri, 
                String selection, 
                String[] selectionArgs)
```

This method begins an asynchronous delete. When the delete operation is done `https://developer.android.com/reference/android/content/AsyncQueryHandler#onDeleteComplete(int,%20java.lang.Object,%20int)` is called.

<br />

| Parameters ||
|---|---|
| `token` | `int`: A token passed into `https://developer.android.com/reference/android/content/AsyncQueryHandler#onDeleteComplete(int,%20java.lang.Object,%20int)` to identify the delete operation. <br /> |
| `cookie` | `Object`: An object that gets passed into `https://developer.android.com/reference/android/content/AsyncQueryHandler#onDeleteComplete(int,%20java.lang.Object,%20int)` <br /> |
| `uri` | `Uri`: the Uri passed to the delete operation. <br /> |
| `selection` | `String`: the where clause. <br /> |
| `selectionArgs` | `String` <br /> |

### startInsert

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

```
public final void startInsert (int token, 
                Object cookie, 
                Uri uri, 
                ContentValues initialValues)
```

This method begins an asynchronous insert. When the insert operation is done `https://developer.android.com/reference/android/content/AsyncQueryHandler#onInsertComplete(int,%20java.lang.Object,%20android.net.Uri)` is called.

<br />

| Parameters ||
|---|---|
| `token` | `int`: A token passed into `https://developer.android.com/reference/android/content/AsyncQueryHandler#onInsertComplete(int,%20java.lang.Object,%20android.net.Uri)` to identify the insert operation. <br /> |
| `cookie` | `Object`: An object that gets passed into `https://developer.android.com/reference/android/content/AsyncQueryHandler#onInsertComplete(int,%20java.lang.Object,%20android.net.Uri)` <br /> |
| `uri` | `Uri`: the Uri passed to the insert operation. <br /> |
| `initialValues` | `ContentValues`: the ContentValues parameter passed to the insert operation. <br /> |

### startQuery

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

```
public void startQuery (int token, 
                Object cookie, 
                Uri uri, 
                String[] projection, 
                String selection, 
                String[] selectionArgs, 
                String orderBy)
```

This method begins an asynchronous query. When the query is done `https://developer.android.com/reference/android/content/AsyncQueryHandler#onQueryComplete(int,%20java.lang.Object,%20android.database.Cursor)` is called.

<br />

| Parameters ||
|---|---|
| `token` | `int`: A token passed into `https://developer.android.com/reference/android/content/AsyncQueryHandler#onQueryComplete(int,%20java.lang.Object,%20android.database.Cursor)` to identify the query. <br /> |
| `cookie` | `Object`: An object that gets passed into `https://developer.android.com/reference/android/content/AsyncQueryHandler#onQueryComplete(int,%20java.lang.Object,%20android.database.Cursor)` <br /> |
| `uri` | `Uri`: The URI, using the content:// scheme, for the content to retrieve. <br /> |
| `projection` | `String`: A list of which columns to return. Passing null will return all columns, which is discouraged to prevent reading data from storage that isn't going to be used. <br /> |
| `selection` | `String`: A filter declaring which rows to return, formatted as an SQL WHERE clause (excluding the WHERE itself). Passing null will return all rows for the given URI. <br /> |
| `selectionArgs` | `String`: You may include ?s in selection, which will be replaced by the values from selectionArgs, in the order that they appear in the selection. The values will be bound as Strings. <br /> |
| `orderBy` | `String`: How to order the rows, formatted as an SQL ORDER BY clause (excluding the ORDER BY itself). Passing null will use the default sort order, which may be unordered. <br /> |

### startUpdate

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

```
public final void startUpdate (int token, 
                Object cookie, 
                Uri uri, 
                ContentValues values, 
                String selection, 
                String[] selectionArgs)
```

This method begins an asynchronous update. When the update operation is done `https://developer.android.com/reference/android/content/AsyncQueryHandler#onUpdateComplete(int,%20java.lang.Object,%20int)` is called.

<br />

| Parameters ||
|---|---|
| `token` | `int`: A token passed into `https://developer.android.com/reference/android/content/AsyncQueryHandler#onUpdateComplete(int,%20java.lang.Object,%20int)` to identify the update operation. <br /> |
| `cookie` | `Object`: An object that gets passed into `https://developer.android.com/reference/android/content/AsyncQueryHandler#onUpdateComplete(int,%20java.lang.Object,%20int)` <br /> |
| `uri` | `Uri`: the Uri passed to the update operation. <br /> |
| `values` | `ContentValues`: the ContentValues parameter passed to the update operation. <br /> |
| `selection` | `String` <br /> |
| `selectionArgs` | `String` <br /> |

## Protected methods

### createHandler

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

```
protected Handler createHandler (Looper looper)
```

<br />

<br />

| Parameters ||
|---|---|
| `looper` | `Looper` <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/os/Handler` | <br /> |

### onDeleteComplete

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

```
protected void onDeleteComplete (int token, 
                Object cookie, 
                int result)
```

Called when an asynchronous delete is completed.

<br />

| Parameters ||
|---|---|
| `token` | `int`: the token to identify the query, passed in from `https://developer.android.com/reference/android/content/AsyncQueryHandler#startDelete(int,%20java.lang.Object,%20android.net.Uri,%20java.lang.String,%20java.lang.String[])`. <br /> |
| `cookie` | `Object`: the cookie object that's passed in from `https://developer.android.com/reference/android/content/AsyncQueryHandler#startDelete(int,%20java.lang.Object,%20android.net.Uri,%20java.lang.String,%20java.lang.String[])`. <br /> |
| `result` | `int`: the result returned from the delete operation <br /> |

### onInsertComplete

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

```
protected void onInsertComplete (int token, 
                Object cookie, 
                Uri uri)
```

Called when an asynchronous insert is completed.

<br />

| Parameters ||
|---|---|
| `token` | `int`: the token to identify the query, passed in from `https://developer.android.com/reference/android/content/AsyncQueryHandler#startInsert(int,%20java.lang.Object,%20android.net.Uri,%20android.content.ContentValues)`. <br /> |
| `cookie` | `Object`: the cookie object that's passed in from `https://developer.android.com/reference/android/content/AsyncQueryHandler#startInsert(int,%20java.lang.Object,%20android.net.Uri,%20android.content.ContentValues)`. <br /> |
| `uri` | `Uri`: the uri returned from the insert operation. <br /> |

### onQueryComplete

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

```
protected void onQueryComplete (int token, 
                Object cookie, 
                Cursor cursor)
```

Called when an asynchronous query is completed.

<br />

| Parameters ||
|---|---|
| `token` | `int`: the token to identify the query, passed in from `https://developer.android.com/reference/android/content/AsyncQueryHandler#startQuery(int,%20java.lang.Object,%20android.net.Uri,%20java.lang.String[],%20java.lang.String,%20java.lang.String[],%20java.lang.String)`. <br /> |
| `cookie` | `Object`: the cookie object passed in from `https://developer.android.com/reference/android/content/AsyncQueryHandler#startQuery(int,%20java.lang.Object,%20android.net.Uri,%20java.lang.String[],%20java.lang.String,%20java.lang.String[],%20java.lang.String)`. <br /> |
| `cursor` | `Cursor`: The cursor holding the results from the query. <br /> |

### onUpdateComplete

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

```
protected void onUpdateComplete (int token, 
                Object cookie, 
                int result)
```

Called when an asynchronous update is completed.

<br />

| Parameters ||
|---|---|
| `token` | `int`: the token to identify the query, passed in from `https://developer.android.com/reference/android/content/AsyncQueryHandler#startUpdate(int,%20java.lang.Object,%20android.net.Uri,%20android.content.ContentValues,%20java.lang.String,%20java.lang.String[])`. <br /> |
| `cookie` | `Object`: the cookie object that's passed in from `https://developer.android.com/reference/android/content/AsyncQueryHandler#startUpdate(int,%20java.lang.Object,%20android.net.Uri,%20android.content.ContentValues,%20java.lang.String,%20java.lang.String[])`. <br /> |
| `result` | `int`: the result returned from the update operation <br /> |