BackupAgentHelper:onRestore 未被调用
BackupAgentHelper: onRestore not getting called
我从这个 link 安装了示例 BackupRestore。
我无法恢复数据。
调用 OnBackup 和 OnCreate,但不调用 OnRestore。
我能够备份:OnCreate 和 OnBackup 受到攻击,但 OnRestore 没有。
@Override
public void onRestore(BackupDataInput data, int appVersionCode,
ParcelFileDescriptor newState) throws IOException {
// Hold the lock while the FileBackupHelper restores the file from
// the data provided here.
synchronized (BackupRestoreActivity.sDataLock) {
super.onRestore(data, appVersionCode, newState);
}
}
public void onRestoreButtonClick(View v) {
Log.v(TAG, "Requesting restore of our most recent data");
mBackupManager.requestRestore(
new RestoreObserver() {
public void restoreFinished(int error) {
/** Done with the restore! Now draw the new state of our data */
Log.v(TAG, "Restore finished, error = " + error);
populateUI();
}
}
);
}
我已经尝试使用 adb 工具(除了 requestRestore),但它也不起作用。
adb shell bmgr restore [package]
adb uninstall [apkfile]
adb install [apkfile]
当我 运行 恢复时,我得到:
restoreStarting: 1 packages
restoreFinished: 0
done
但是OnRestore没有命中,数据也没有恢复。
我正在使用 Android Studio 3.0。我在这上面花了很多时间。任何人都可以解释一下吗?
查看日志后,我注意到一条消息:
I/Backup:[KeyValueRateLimiter] K/V [package] 的备份被速率限制器中止。下一个=1519165401410,当前=1519088429345
这意味着直到 2018 年 2 月 20 日 5:23:21 下午才进行备份。 Google Transport 的备份有速率限制,因此我将尝试没有速率限制的 Local Transport。
更新:切换到本地交通工具似乎有效。它能够在我的设备上 uninstall/reinstall 应用后恢复值。
以下是我为让它工作所做的工作:
- 将 BackupRestore 项目中的源文件复制到新项目中。
- 从该网站为清单文件生成备份密钥:https://developer.android.com/google/backup/signup.html
- 运行 adb shell bmgr list transports 查看传输。
- 运行 adb shell bmgr transport android/com.android.internal.backup.LocalTransport 将传输更改为本地 (Google 运输将施加速率限制)
- 运行 adb shell bmgr backup [package] -- 备份应用程序
- 运行 adb shell dumpsys backup 查看挂起的备份文件
adb shell bmgr 运行
adb uninstall [包名]
adb install -t [apk 文件](为了调试我用了-t)
检查安装期间是否恢复了这些值。
- 您还可以单击“恢复上次数据”按钮,OnRestore 事件将触发,最后一次备份将被恢复。
我为此苦苦挣扎。我希望这对某人有所帮助。
我从这个 link 安装了示例 BackupRestore。
我无法恢复数据。
调用 OnBackup 和 OnCreate,但不调用 OnRestore。
我能够备份:OnCreate 和 OnBackup 受到攻击,但 OnRestore 没有。
@Override
public void onRestore(BackupDataInput data, int appVersionCode,
ParcelFileDescriptor newState) throws IOException {
// Hold the lock while the FileBackupHelper restores the file from
// the data provided here.
synchronized (BackupRestoreActivity.sDataLock) {
super.onRestore(data, appVersionCode, newState);
}
}
public void onRestoreButtonClick(View v) {
Log.v(TAG, "Requesting restore of our most recent data");
mBackupManager.requestRestore(
new RestoreObserver() {
public void restoreFinished(int error) {
/** Done with the restore! Now draw the new state of our data */
Log.v(TAG, "Restore finished, error = " + error);
populateUI();
}
}
);
}
我已经尝试使用 adb 工具(除了 requestRestore),但它也不起作用。
adb shell bmgr restore [package]
adb uninstall [apkfile]
adb install [apkfile]
当我 运行 恢复时,我得到:
restoreStarting: 1 packages
restoreFinished: 0
done
但是OnRestore没有命中,数据也没有恢复。
我正在使用 Android Studio 3.0。我在这上面花了很多时间。任何人都可以解释一下吗?
查看日志后,我注意到一条消息:
I/Backup:[KeyValueRateLimiter] K/V [package] 的备份被速率限制器中止。下一个=1519165401410,当前=1519088429345
这意味着直到 2018 年 2 月 20 日 5:23:21 下午才进行备份。 Google Transport 的备份有速率限制,因此我将尝试没有速率限制的 Local Transport。
更新:切换到本地交通工具似乎有效。它能够在我的设备上 uninstall/reinstall 应用后恢复值。
以下是我为让它工作所做的工作:
- 将 BackupRestore 项目中的源文件复制到新项目中。
- 从该网站为清单文件生成备份密钥:https://developer.android.com/google/backup/signup.html
- 运行 adb shell bmgr list transports 查看传输。
- 运行 adb shell bmgr transport android/com.android.internal.backup.LocalTransport 将传输更改为本地 (Google 运输将施加速率限制)
- 运行 adb shell bmgr backup [package] -- 备份应用程序
- 运行 adb shell dumpsys backup 查看挂起的备份文件
adb shell bmgr 运行
adb uninstall [包名]
adb install -t [apk 文件](为了调试我用了-t)
检查安装期间是否恢复了这些值。
- 您还可以单击“恢复上次数据”按钮,OnRestore 事件将触发,最后一次备份将被恢复。
我为此苦苦挣扎。我希望这对某人有所帮助。