我从此链接安装了示例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。我花了很多时间在这上面。任何人都能解释一下吗?
答案 0 :(得分:1)
检查完日志后,我发现了一条消息:
I / Backup:[KeyValueRateLimiter] [包]的K / V备份由速率限制器中止。 next = 1519165401410,current = 1519088429345
这意味着直到2/20/2018,5:23:21 PM才会进行备份。使用Google Transport进行备份的速率限制,因此我将尝试使用没有速率限制的本地传输。
更新:切换到本地传输似乎有效。在我的设备上卸载/重新安装应用后,它能够恢复值。
这是我为了让它发挥作用所做的:
adb shell bmgr run
adb uninstall [包名]
adb install -t [apk文件](用于调试我用过-t)
检查安装期间是否恢复了值。
我为此苦苦挣扎。我希望这有助于某人。