gpt4 book ai didi

android - 没有为我的自定义 BackupAgent 调用 onRestore

转载 作者:IT老高 更新时间:2023-10-28 23:07:26 25 4
gpt4 key购买 nike

我想要备份和恢复我的 Android 应用程序中的一些数据。为此,我创建了 BackupAgent 的自定义实现。

在我的 list 中包含了备份代理,如下所示

<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" />

我已经包含了备份服务 api key ,虽然我正在使用模拟器 (Android 2.2) 进行测试,但这不是必需的,因为它使用本地备份传输。

为了测试备份和恢复,我做了以下工作:

  • 在安装了我的应用程序后启动模拟器。
  • 启用备份

    adb shell bmgr enable true

  • 调用我的部分代码是调用 BackupManager 类中的 dataChanged 方法。

  • 手动启动备份操作

    adb shell bmgr 运行

  • 在日志中查看我的自定义 BackupAgent 的 onBackup 方法被调用。

  • 卸载应用
  • 重新安装应用
  • 如果调用了 onRestore 方法,请查看日志。

问题是 onRestore 方法似乎没有被调用,我不知道为什么。重新安装应用程序或使用 adb 手动触发还原后,我在控制台中看到以下内容。

$adb shell bmgr restore com.myapp
restoreStarting: 2 packages
restoreFinished: 0
done

还有这个在日志中

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

但我没有看到实际调用了 onRestore(我在它的开头有一些日志记录语句?

这种情况发生在你身上吗?有没有什么原因导致onRestore方法没有被调用,甚至在onBackup被调用了?

最佳答案

根据我的经验,出于某种奇怪的原因(我尚未确定),BackupAgents 中的日志记录语句不会显示在日志中。尽管如此,我已经能够确认 onRestore 方法实际上正确运行。

在您的问题中,您指出 onRestore 方法“似乎没有被调用”,因为您无法看到正确的日志。您能否确认结果失败(即应该正确恢复的数据没有)?

关于android - 没有为我的自定义 BackupAgent 调用 onRestore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8928669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com