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

*** ** * ** ***


```
public interface BackupDeviceAction
```

<br />

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

|---|---|
| `https://developer.android.com/reference/androidx/test/backup/actions/AssertStorageAction` | Asserts the correctness of restored test data. |
| `https://developer.android.com/reference/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/androidx/test/backup/BackupDeviceActionArgs`, whose documented keys are listed in `https://developer.android.com/reference/androidx/test/backup/BackupActionInputKeys`, and reports its outcome through `https://developer.android.com/reference/androidx/test/backup/BackupDeviceActionResult`, whose documented keys are listed in `https://developer.android.com/reference/androidx/test/backup/BackupActionOutputKeys`. Build the outcome with `https://developer.android.com/reference/androidx/test/backup/BackupDeviceActionResult#success(kotlin.collections.Map)` or `https://developer.android.com/reference/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/androidx/test/platform/app/InstrumentationRegistry`.

## Summary

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

## Public methods

### execute

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

```
abstract @NonNull BackupDeviceActionResult execute(@NonNull Context context, @NonNull BackupDeviceActionArgs args)
```

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/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 |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context` | application context on the target device |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/test/backup/BackupDeviceActionArgs args` | input arguments passed from the host orchestrator, keyed by `https://developer.android.com/reference/androidx/test/backup/BackupActionInputKeys` |

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