onRestore não invocado para o meu BackupAgent personalizado
Existem alguns dados no meu aplicativo Android que eu gostaria de fazer backup e restauração. Para esse efeito, criei uma implementação personalizada deBackupAgent
.
No meu manifesto incluímos o agente de backup, como você pode ver abaixo
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="auto"
package="com.myapp"
android:versionCode="14"
android:versionName="1.13" >
<application
android:backupAgent="com.myapp.MyBackupAgent">
<meta-data
android:name="com.google.android.backup.api_key"
android:value="my key" />
Incluí a chave api do serviço de backup, embora esteja testando com o emulador (Android 2.2) e não seja necessário, porque ele usa o transporte de backup loca
Para fazer o teste do backup e restauração, fiz o seguinte:
Inicie o emulador com meu aplicativo instaladAtivar backup
adb shell bmgr enable true
Chame a parte do meu código onde o método dataChanged na classe BackupManager é chamad
Inicie manualmente a operação de backup
adb shell bmgr run
Verificado no log que o método onBackup do meu BackupAgent personalizado foi chamad
Desinstale o aplicativoReinstale o aplicativo Verifique o log se o método onRestore for chamadO problema é que o método onRestore não parece ser chamado e não sei por que. Depois de reinstalar o aplicativo ou acionar manualmente a restauração com adb, vejo o seguinte no consol
$adb shell bmgr restore com.myapp
restoreStarting: 2 packages
restoreFinished: 0
done
e esse outro no log
D/AndroidRuntime( 8259):
D/AndroidRuntime( 8259): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
D/AndroidRuntime( 8259): CheckJNI is ON
D/AndroidRuntime( 8259): --- registering native functions ---
D/BackupManagerService( 59): MSG_RUN_RESTORE observer=android.app.backup.IRestoreObserver$Stub$Proxy@450e16a8
V/LocalTransport( 59): start restore 1
V/LocalTransport( 59): nextRestorePackage() = @pm@
V/LocalTransport( 59): getRestoreData() found 7 key files
V/LocalTransport( 59): ... key=com.android.providers.settings size=1208
V/LocalTransport( 59): ... key=com.myapp size=501
V/LocalTransport( 59): ... key=android size=1208
V/LocalTransport( 59): ... key=com.android.providers.userdictionary size=1208
V/LocalTransport( 59): ... key=com.android.browser size=1208
V/LocalTransport( 59): ... key=com.android.inputmethod.latin size=1208
V/LocalTransport( 59): ... key=@meta@ size=11
V/LocalTransport( 59): no more packages to restore
V/LocalTransport( 59): finishRestore()
V/LocalTransport( 59): finishRestore()
D/AndroidRuntime( 8259): Shutting down VM
mas não vejo que a chamada para onRestore seja realmente feita (eu tenho algumas instruções de registro logo no iníci
Isso já aconteceu com você? Existe alguma razão para o método onRestore não ser chamado, mesmo noonBackup
foi chamado