# AppManager

Artifact: [androidx.car.app:app](https://developer.android.com/jetpack/androidx/releases/car-app) [View Source](https://cs.android.com/search?q=file:androidx/car/app/AppManager.java+class:androidx.car.app.AppManager) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.0.0)

*** ** * ** ***


```
public class AppManager implements Manager
```

<br />

Known direct subclasses [TestAppManager](https://developer.android.com/reference/androidx/car/app/testing/TestAppManager)

|---|---|
| `https://developer.android.com/reference/androidx/car/app/testing/TestAppManager` | The `https://developer.android.com/reference/androidx/car/app/AppManager` that is used for testing. |

*** ** * ** ***

Manages the communication between the app and the host.

## Summary

| ### Public methods |
|---|---|
| `void` | `@https://developer.android.com/reference/androidx/car/app/annotations/RequiresCarApi(value = 5) https://developer.android.com/reference/androidx/car/app/AppManager#dismissAlert(int)(int alertId)` Dismisses the alert with the given `id`. |
| `void` | `https://developer.android.com/reference/androidx/car/app/AppManager#invalidate()()` Requests the current template to be invalidated, which eventually triggers a call to `https://developer.android.com/reference/androidx/car/app/Screen#onGetTemplate()` to get the new template to display. |
| `void` | `https://developer.android.com/reference/androidx/car/app/AppManager#setSurfaceCallback(androidx.car.app.SurfaceCallback)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/car/app/SurfaceCallback surfaceCallback)` Sets the `https://developer.android.com/reference/androidx/car/app/SurfaceCallback` to get changes and updates to the surface on which the app can draw custom content, or `null` to reset the listener. |
| `void` | `@https://developer.android.com/reference/androidx/car/app/annotations/RequiresCarApi(value = 5) https://developer.android.com/reference/androidx/car/app/AppManager#showAlert(androidx.car.app.model.Alert)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/model/Alert alert)` Shows an alert on the car screen. |
| `void` | `https://developer.android.com/reference/androidx/car/app/AppManager#showToast(java.lang.CharSequence,int)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/CharSequence.html text, int duration)` Shows a toast on the car screen. |

## Public methods

### dismissAlert

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.2.0)

```
@RequiresCarApi(value = 5)
public void dismissAlert(int alertId)
```

Dismisses the alert with the given `id`.

This is a no-op if there is not an active alert with the given `id`

| Parameters |
|---|---|
| `int alertId` | the `id` of the `alert` that should be dismissed |

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/car/app/HostException` | if the remote call fails |

### invalidate

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.0.0)

```
public void invalidate()
```

Requests the current template to be invalidated, which eventually triggers a call to `https://developer.android.com/reference/androidx/car/app/Screen#onGetTemplate()` to get the new template to display.

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/car/app/HostException` | if the remote call fails |

### setSurfaceCallback

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.0.0)

```
public void setSurfaceCallback(@Nullable SurfaceCallback surfaceCallback)
```

Sets the `https://developer.android.com/reference/androidx/car/app/SurfaceCallback` to get changes and updates to the surface on which the app can draw custom content, or `null` to reset the listener.

This call requires the `androidx.car.app.ACCESS_SURFACE` permission to be declared.

The `https://developer.android.com/reference/android/view/Surface.html` can be used to draw custom content such as a navigation app's map.

Note that the listener relates to UI events and will be executed on the main thread using `https://developer.android.com/reference/android/os/Looper.html#getMainLooper()`.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/SecurityException.html` | if the app does not have the required permissions to access the surface |
| `https://developer.android.com/reference/androidx/car/app/HostException` | if the remote call fails |

### showAlert

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.2.0)

```
@RequiresCarApi(value = 5)
public void showAlert(@NonNull Alert alert)
```

Shows an alert on the car screen.

Alerts with the same id, in the scope of the application, are considered equal. Even if their content differ.

Posting an alert while another alert is displayed would dismiss the old alert and replace it with the new one.

Only navigation templates support alerts. Triggering an alert while showing a non-supported template results in the cancellation of the alert.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/model/Alert alert` | the alert to show |

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/car/app/HostException` | if the remote call fails |
| `https://developer.android.com/reference/java/lang/NullPointerException.html` | if `alert` is `null` |

### showToast

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.0.0)

```
public void showToast(@NonNull CharSequence text, int duration)
```

Shows a toast on the car screen.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/CharSequence.html text` | the text to show |
| `int duration` | how long to display the message |

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/car/app/HostException` | if the remote call fails |
| `https://developer.android.com/reference/java/lang/NullPointerException.html` | if `text` is `null` |