# MessageCompat

Artifact: [androidx.core:core](https://developer.android.com/jetpack/androidx/releases/core) [View Source](https://cs.android.com/search?q=file:androidx/core/os/MessageCompat.java+class:androidx.core.os.MessageCompat) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

*** ** * ** ***

<br />

```
public final class MessageCompat
```

<br />

*** ** * ** ***

Helper for accessing features in `https://developer.android.com/reference/android/os/Message.html`.

## Summary

| ### Public methods |
|---|---|
| `static boolean` | `https://developer.android.com/reference/androidx/core/os/MessageCompat#isAsynchronous(android.os.Message)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/os/Message.html message)` Returns true if the message is asynchronous, meaning that it is not subject to `https://developer.android.com/reference/android/os/Looper.html` synchronization barriers. |
| `static void` | `https://developer.android.com/reference/androidx/core/os/MessageCompat#setAsynchronous(android.os.Message,boolean)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/os/Message.html message, boolean async)` Sets whether the message is asynchronous, meaning that it is not subject to `https://developer.android.com/reference/android/os/Looper.html` synchronization barriers. |

## Public methods

### isAsynchronous

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

```
public static boolean isAsynchronous(@NonNull Message message)
```

Returns true if the message is asynchronous, meaning that it is not subject to `https://developer.android.com/reference/android/os/Looper.html` synchronization barriers.

| Returns |
|---|---|
| `boolean` | True if the message is asynchronous. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/core/os/MessageCompat#setAsynchronous(android.os.Message,boolean)` |   |
| `https://developer.android.com/reference/android/os/Message.html#isAsynchronous()` |   |

### setAsynchronous

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

```
public static void setAsynchronous(@NonNull Message message, boolean async)
```

Sets whether the message is asynchronous, meaning that it is not subject to `https://developer.android.com/reference/android/os/Looper.html` synchronization barriers.

Certain operations, such as view invalidation, may introduce synchronization barriers into the `https://developer.android.com/reference/android/os/Looper.html`'s message queue to prevent subsequent messages from being delivered until some condition is met. In the case of view invalidation, messages which are posted after a call to `https://developer.android.com/reference/android/view/View.html#invalidate()` are suspended by means of a synchronization barrier until the next frame is ready to be drawn. The synchronization barrier ensures that the invalidation request is completely handled before resuming.

Asynchronous messages are exempt from synchronization barriers. They typically represent interrupts, input events, and other signals that must be handled independently even while other work has been suspended.

Note that asynchronous messages may be delivered out of order with respect to synchronous messages although they are always delivered in order among themselves. If the relative order of these messages matters then they probably should not be asynchronous in the first place. Use with caution.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/os/Message.html message` | message for this to set the mode. |
| `boolean async` | True if the message is asynchronous. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/core/os/MessageCompat#isAsynchronous(android.os.Message)` |   |
| `https://developer.android.com/reference/android/os/Message.html#setAsynchronous(boolean)` |   |