Cuando un usuario compra un dispositivo nuevo o restablece el que ya tiene, es de esperar que cuando Google Play restaure su aplicación en su dispositivo durante la configuración inicial, los datos anteriores asociados con la aplicación también se restablezcan. De forma predeterminada, para ello se debe activar la copia de seguridad automática mediante la API AutoBackup – Cómo crear una copia de seguridad automática para los datos del usuario
Auto Backup API
La API Auto backup sube automáticamente los datos de la aplicación a una carpeta privada en la cuenta de Google Drive del usuario, su limite es de 25MB por aplicación, los datos subidos no se descuentan de la cuota personal que tenga el usuario contratado. Si se alcanza el límite de la cuota para una aplicación, el sistema ya no respaldrá los datos. Cuando se realiza una nueva copia de seguridad, se elimina la anterior.
Para habilitarlo se debe añadir la siguiente directiva al archivo de manifiesto AndroidManifest.xml, dentro del bloque application
android:allowBackup="true"
Iniciar el backup
El mismo sistema Android determina el momento ideono para realizar el backup, puede depender del contexto, si hay wifi, si el dispositivo no se está usando por parte del usuario (IDLE). Cada 24 horas del último backup etc..
El usuario puede forzar en realizar una copia de seguridad de los datos de la aplicación usando el menú de configuración del sistema -> Google -> Copias de seguridad y dar Realizar copia de seguridad

Personalizar ambito del backup
Por defecto la copia de seguridad incluirá todo lo que es relacionado con la app, base de datos, archivos de configuración, archivos que esten en su carpeta interna o directorio externo asociado a la app.
Se puede personalizar añadiendo la directiva
android:fullBackupContent="@xml/backup_rules"
Permite incluir o excluir elementos
<full-backup-content>
<include domain=["file" | "database" | "sharedpref" | "external" | "root"]
path="string"
requireFlags=["clientSideEncryption" | "deviceToDeviceTransfer"] />
<exclude domain=["file" | "database" | "sharedpref" | "external" | "root"]
path="string" />
</full-backup-content>
- clientSideEncryption: se utiliza para cifrar la copia de seguridad del dispositivo usando una clave.
- deviceToDeviceTransfer: se utiliza para permitir que el usuario transfiera la copia de seguridad a otro dispositivo mediante la transferencia local de dispositivo a dispositivo.
Ejemplo, si tenemos un archivo de preferencias llamado my_app
<full-backup-content>
<include domain="sharedpref" path="my_app.xml" />
</full-backup-content>
Testeo
Para testear la funcionalidad de la copia de seguridad, mediante comandos Shell ADB podemos forzar la creación de la copia de seguridad y la restauración.
Backup – Copia de seguridad
Habilitar el administrador de copias de seguridad
adb shell bmgr enabled
Inicializar y ejecutar el administrador de copias de seguridad
adb shell bmgr backup @pm@
adb shell bmgr run
Realizar una copia de seguridad completa
adb shell bmgr fullbackup <nombre_del_paquete>
Cuando el sistema android realiza una copia de seguridad completa, se cerrará la aplicación de forma predeterminada, para evitar cambios en los datos locales mientras se ejecuta el proceso. Si queremos ofrecer una copia de seguridad en primer plano, podemos habilitar una bandera en el manifiesto. (funciona para la versión> = 24)
android:backupInForeground="true"
Restore – Restaurar la copia de seguridad
La restauración de datos se realiza automáticamente cuando la aplicación se reinstala desde la tienda Google Play o usando los comandos ADB (instalación usando Android Studio)
Demostración
Video demostrativo para ver la implementación de la funcionalidad copia de seguridad automática para Android