# BackupDeviceAction

Artifact: [androidx.test.backup:backup](https://developer.android.com/jetpack/androidx/releases/test-backup) [View Source](https://cs.android.com/search?q=file:androidx/test/backup/BackupDeviceAction.kt+class:androidx.test.backup.BackupDeviceAction) Added in [1.0.0-alpha04](https://developer.android.com/jetpack/androidx/releases/test-backup#1.0.0-alpha04)

*** ** * ** ***


```
interface BackupDeviceAction
```

<br />

Known direct subclasses [AssertStorageAction](https://developer.android.com/reference/kotlin/androidx/test/backup/actions/AssertStorageAction), [PopulateStorageAction](https://developer.android.com/reference/kotlin/androidx/test/backup/actions/PopulateStorageAction)

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/test/backup/actions/AssertStorageAction` | Asserts the correctness of restored test data. |
| `https://developer.android.com/reference/kotlin/androidx/test/backup/actions/PopulateStorageAction` | Populates test data inside the application sandbox before a backup. |

*** ** * ** ***

Runs an action inside the application sandbox on the target device.

Implementations must provide a public no-arg constructor to enable dynamic instantiation.

An action reads its configuration from `https://developer.android.com/reference/kotlin/androidx/test/backup/BackupDeviceActionArgs`, whose documented keys are listed in `https://developer.android.com/reference/kotlin/androidx/test/backup/BackupActionInputKeys`, and reports its outcome through `https://developer.android.com/reference/kotlin/androidx/test/backup/BackupDeviceActionResult`, whose documented keys are listed in `https://developer.android.com/reference/kotlin/androidx/test/backup/BackupActionOutputKeys`. Build the outcome with `https://developer.android.com/reference/kotlin/androidx/test/backup/BackupDeviceActionResult#success(kotlin.collections.Map)` or `https://developer.android.com/reference/kotlin/androidx/test/backup/BackupDeviceActionResult#failure(kotlin.String,kotlin.collections.Map)` so that the host can tell the two apart.

To use the instrumentation that runs the action, such as its `UiAutomation`, get it from `https://developer.android.com/reference/kotlin/androidx/test/platform/app/InstrumentationRegistry`.

## Summary

| ### Public functions |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/test/backup/BackupDeviceActionResult` | `https://developer.android.com/reference/kotlin/androidx/test/backup/BackupDeviceAction#execute(android.content.Context,androidx.test.backup.BackupDeviceActionArgs)(context: https://developer.android.com/reference/android/content/Context.html, args: https://developer.android.com/reference/kotlin/androidx/test/backup/BackupDeviceActionArgs)` Runs the action payload. |

## Public functions

### execute

Added in [1.0.0-alpha04](https://developer.android.com/jetpack/androidx/releases/test-backup#1.0.0-alpha04)

```
fun execute(context: Context, args: BackupDeviceActionArgs): BackupDeviceActionResult
```

Runs the action payload.

Implementations should report a recoverable problem, such as a missing argument or a failed assertion, by returning `https://developer.android.com/reference/kotlin/androidx/test/backup/BackupDeviceActionResult#failure(kotlin.String,kotlin.collections.Map)` rather than by throwing. The host treats a thrown exception as a crash of the action and reports it with a stack trace.

| Parameters |
|---|---|
| `context: https://developer.android.com/reference/android/content/Context.html` | application context on the target device |
| `args: https://developer.android.com/reference/kotlin/androidx/test/backup/BackupDeviceActionArgs` | input arguments passed from the host orchestrator, keyed by `https://developer.android.com/reference/kotlin/androidx/test/backup/BackupActionInputKeys` |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/test/backup/BackupDeviceActionResult` | result returned to the host, keyed by `https://developer.android.com/reference/kotlin/androidx/test/backup/BackupActionOutputKeys` |