Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Ctors](https://developer.android.com/reference/android/app/backup/SharedPreferencesBackupHelper#pubctors) \| [Methods](https://developer.android.com/reference/android/app/backup/SharedPreferencesBackupHelper#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/app/backup/SharedPreferencesBackupHelper#inhmethods)

# SharedPreferencesBackupHelper

*** ** * ** ***

[Kotlin](https://developer.android.com/reference/kotlin/android/app/backup/SharedPreferencesBackupHelper "View this page in Kotlin") \|Java


`
public


class
SharedPreferencesBackupHelper
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


implements

https://developer.android.com/reference/android/app/backup/BackupHelper


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.app.backup.SharedPreferencesBackupHelper |

<br />

*** ** * ** ***

A helper class that can be used in conjunction with
`https://developer.android.com/reference/android/app/backup/BackupAgentHelper` to manage the backup of
`https://developer.android.com/reference/android/content/SharedPreferences`. Whenever a backup is performed, it
will back up all named shared preferences that have changed since the last
backup operation.


To use this class, the application's backup agent class should extend
`https://developer.android.com/reference/android/app/backup/BackupAgentHelper`. Then, in the agent's
`https://developer.android.com/reference/android/app/backup/BackupAgent#onCreate()` method, an instance of this class should be
allocated and installed as a backup/restore handler within the BackupAgentHelper
framework. For example, an agent supporting backup and restore for
an application with two groups of `https://developer.android.com/reference/android/content/SharedPreferences`
data might look something like this:

     import android.app.backup.BackupAgentHelper;
     import android.app.backup.SharedPreferencesBackupHelper;

     public class MyBackupAgent extends BackupAgentHelper {
         // The names of the SharedPreferences groups that the application maintains.  These
         // are the same strings that are passed to https://developer.android.com/reference/android/content/Context#getSharedPreferences(java.lang.String,%20int).
         static final String PREFS_DISPLAY = "displayprefs";
         static final String PREFS_SCORES = "highscores";

         // An arbitrary string used within the BackupAgentHelper implementation to
         // identify the SharedPreferenceBackupHelper's data.
         static final String MY_PREFS_BACKUP_KEY = "myprefs";

         // Allocate a helper and install it.
         public void onCreate() {
             SharedPreferencesBackupHelper helper =
                     new SharedPreferencesBackupHelper(this, PREFS_DISPLAY, PREFS_SCORES);
             addHelper(MY_PREFS_BACKUP_KEY, helper);
         }
     }


No further implementation is needed; the `https://developer.android.com/reference/android/app/backup/BackupAgentHelper` mechanism automatically
dispatches the
`https://developer.android.com/reference/android/app/backup/BackupAgent#onBackup(android.os.ParcelFileDescriptor,%20android.app.backup.BackupDataOutput,%20android.os.ParcelFileDescriptor)`
and
`https://developer.android.com/reference/android/app/backup/BackupAgent#onRestore(android.app.backup.BackupDataInput,%20int,%20android.os.ParcelFileDescriptor)`
callbacks to the SharedPreferencesBackupHelper as appropriate.

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/app/backup/SharedPreferencesBackupHelper#SharedPreferencesBackupHelper(android.content.Context,%20java.lang.String[])(https://developer.android.com/reference/android/content/Context context, https://developer.android.com/reference/java/lang/String prefGroups) ` Construct a helper for backing up and restoring the `https://developer.android.com/reference/android/content/SharedPreferences` under the given names. |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/android/app/backup/SharedPreferencesBackupHelper#performBackup(android.os.ParcelFileDescriptor,%20android.app.backup.BackupDataOutput,%20android.os.ParcelFileDescriptor)(https://developer.android.com/reference/android/os/ParcelFileDescriptor oldState, https://developer.android.com/reference/android/app/backup/BackupDataOutput data, https://developer.android.com/reference/android/os/ParcelFileDescriptor newState) ` Backs up the configured `https://developer.android.com/reference/android/content/SharedPreferences` groups. |
| ` void` | ` https://developer.android.com/reference/android/app/backup/SharedPreferencesBackupHelper#restoreEntity(android.app.backup.BackupDataInputStream)(https://developer.android.com/reference/android/app/backup/BackupDataInputStream data) ` Restores one entity from the restore data stream to its proper shared preferences file store. |
| ` void` | ` https://developer.android.com/reference/android/app/backup/SharedPreferencesBackupHelper#writeNewStateDescription(android.os.ParcelFileDescriptor)(https://developer.android.com/reference/android/os/ParcelFileDescriptor fd) ` Called by `https://developer.android.com/reference/android/app/backup/BackupAgentHelper` after a restore operation to write the backup state file corresponding to the data as processed by the helper. |

| ### Inherited methods |
|---|---|
| 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*. | ||
| From interface ` https://developer.android.com/reference/android/app/backup/BackupHelper ` |---|---| | ` abstract void` | ` https://developer.android.com/reference/android/app/backup/BackupHelper#performBackup(android.os.ParcelFileDescriptor,%20android.app.backup.BackupDataOutput,%20android.os.ParcelFileDescriptor)(https://developer.android.com/reference/android/os/ParcelFileDescriptor oldState, https://developer.android.com/reference/android/app/backup/BackupDataOutput data, https://developer.android.com/reference/android/os/ParcelFileDescriptor newState) ` Based on `oldState`, determine what application content needs to be backed up, write it to `data`, and fill in `newState` with the complete state as it exists now. | | ` abstract void` | ` https://developer.android.com/reference/android/app/backup/BackupHelper#restoreEntity(android.app.backup.BackupDataInputStream)(https://developer.android.com/reference/android/app/backup/BackupDataInputStream data) ` Called by `https://developer.android.com/reference/android/app/backup/BackupAgentHelper` to restore a single entity from the restore data set. | | ` abstract void` | ` https://developer.android.com/reference/android/app/backup/BackupHelper#writeNewStateDescription(android.os.ParcelFileDescriptor)(https://developer.android.com/reference/android/os/ParcelFileDescriptor newState) ` Called by `https://developer.android.com/reference/android/app/backup/BackupAgentHelper` after a restore operation to write the backup state file corresponding to the data as processed by the helper. | ||

## Public constructors

### SharedPreferencesBackupHelper

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

```
public SharedPreferencesBackupHelper (Context context, 
                String... prefGroups)
```

Construct a helper for backing up and restoring the
`https://developer.android.com/reference/android/content/SharedPreferences` under the given names.

<br />

| Parameters ||
|---|---|
| `context` | `Context`: The application `https://developer.android.com/reference/android/content/Context` <br /> |
| `prefGroups` | `String`: The names of each `https://developer.android.com/reference/android/content/SharedPreferences` file to back up <br /> |

## Public methods

### performBackup

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

```
public void performBackup (ParcelFileDescriptor oldState, 
                BackupDataOutput data, 
                ParcelFileDescriptor newState)
```

Backs up the configured `https://developer.android.com/reference/android/content/SharedPreferences` groups.

<br />

| Parameters ||
|---|---|
| `oldState` | `ParcelFileDescriptor`: An open, read-only `https://developer.android.com/reference/android/os/ParcelFileDescriptor` pointing to the last backup state provided by the application. May be `null`, in which case no prior state is being provided and the application should perform a full backup. <br /> |
| `data` | `BackupDataOutput`: An open, read/write `https://developer.android.com/reference/android/app/backup/BackupDataOutput` pointing to the backup data destination. Typically the application will use backup helper classes to write to this file. <br /> |
| `newState` | `ParcelFileDescriptor`: An open, read/write `https://developer.android.com/reference/android/os/ParcelFileDescriptor` pointing to an empty file. The application should record the final backup state here after writing the requested data to the `data` output stream. <br /> |

### restoreEntity

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

```
public void restoreEntity (BackupDataInputStream data)
```

Restores one entity from the restore data stream to its proper shared
preferences file store.

<br />

| Parameters ||
|---|---|
| `data` | `BackupDataInputStream`: An open `https://developer.android.com/reference/android/app/backup/BackupDataInputStream` from which the backup data can be read. <br /> |

### writeNewStateDescription

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

```
public void writeNewStateDescription (ParcelFileDescriptor fd)
```

Called by `https://developer.android.com/reference/android/app/backup/BackupAgentHelper`
after a restore operation to write the backup state file corresponding to
the data as processed by the helper. The data written here will be
available to the helper during the next call to its
`https://developer.android.com/reference/android/app/backup/BackupHelper#performBackup(android.os.ParcelFileDescriptor,%20android.app.backup.BackupDataOutput,%20android.os.ParcelFileDescriptor)` method.


This method will be called even if the handler's
`https://developer.android.com/reference/android/app/backup/BackupHelper#restoreEntity(android.app.backup.BackupDataInputStream)` method was never invoked during
the restore operation.


**Note:** The helper should not close or seek the `newState`
file descriptor.

<br />

<br />

| Parameters ||
|---|---|
| `fd` | `ParcelFileDescriptor`: A `https://developer.android.com/reference/android/os/ParcelFileDescriptor` to which the new state will be written. <br /> |