Android Data Backup. This tutorial describes the usage of the Android data backup API for restoring Application configuration data.
1. Android Data Backup
1.1. Purpose of data backup
The backup service of Android allows you to copy your persistent application data to a remote cloud storage. This allows you to restore the application data and settings in case the user switches Android devices, re-installs the application or performs a factory reset.
Data backup is not required to be available on all Android devices and the actual cloud storage might be customized by the device manufacturer. Therefore the Android team guarantees no safety for the stored data.
If the service is not available on your device, the backup service is not called, hence it is still save to implement this service and run it on any device.
To use the backup service you have to register your application package for it, via the Backup service registration. This webpage allows you to get a backup key for a application package.
1.2. Backup of shared preferences and files
For saving and restoring your data you extend the BackupAgent
class.
The simplest way to implement your backup is to use SharedPreferencesBackupHelper
for shared preferences and FileBackupHelper
to backup files from the internal storage system.
Both helper classes save and restore automatically the registered files.
1.3. General backup
For a more complex backup you can directly implement the BackupAgent
and its save and restore methods.
See Backup Agenda Documentation for details.
2. Exercise: Implementing a data backup of application settings
2.1. Project implementation
The following application uses the com.vogella.android.databackup
top level package.
Register this application for the backup service via https://developer.android.com/google/backup/signup.html
This package was registered with the Google service.
The backup agenda and the registration key is entered in the AndroidManifest.xml file as in the following listing.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.vogella.android.databackup"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="17"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:backupAgent="MyBackupAgent"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.vogella.android.databackup.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.backup.api_key"
android:value="AEdPqrEAAAAI4SfiyaQncNamIUH0NboU3tzOjXGztXLv2LZkEw" />
</application>
</manifest>
The corresponding backup agent can be implemented as demonstrated in the following listing.
package com.vogella.android.databackup;
import android.app.backup.BackupAgentHelper;
import android.app.backup.SharedPreferencesBackupHelper;
public class MyBackupAgent extends BackupAgentHelper {
// The name of the SharedPreferences file
static final String PREFS = "myprefs";
// A key to uniquely identify the set of backup data
static final String PREFS_BACKUP_KEY = "myprefs";
@Override
public void onCreate() {
SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, PREFS);
addHelper(PREFS_BACKUP_KEY, helper);
}
}
2.2. Trigger backup and restore
The implemented backup manager works automatically without user interaction and saves and restores the registered shared preferences associated with the user. Simply change and save shared preferences under the file name which you registered your application with.
If you want to test the save and restore operation via the adb shell command you can use the following commands.
// Trigger a backup, usage:
// adb shell bmgr backup <package>
// schedule backup
adb shell bmgr backup com.vogella.android.databackup
// ensure scheduled backup run
adb shell bmgr run
// to restore you backup use bmgr restore
adb shell bmgr restore com.vogella.android.databackup
3. Android Animation Resources
3.1. vogella Java example code
If you need more assistance we offer Online Training and Onsite training as well as consulting