gpt4 book ai didi

android - BackupManager 不调用备份传输

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

好的,所以我正在尝试在我的应用程序中实现数据备份,并且一直在关注 this guide .我已经使用 SharedPreferencesBackupHelper 实现了我的 BackupAgentHelper。我没有收到任何错误,并且我肯定会在所有首选项更改后调用 dataChanged() ,但是当我测试备份时(`adb shell bmgr run)我在 LogCat 中获得此信息:

07-07 12:29:00.258: V/BackupManagerService(291): Scheduling immediate backup pass
07-07 12:29:00.258: V/BackupManagerService(291): Running a backup pass
07-07 12:29:00.258: V/BackupManagerService(291): clearing pending backups
07-07 12:29:00.258: V/PerformBackupTask(291): Beginning backup of 1 targets
07-07 12:29:00.289: V/BackupServiceBinder(291): doBackup() invoked
07-07 12:29:00.289: D/PerformBackupTask(291): invokeAgentForBackup on @pm@
07-07 12:29:00.297: I/PerformBackupTask(291): no backup data written; not calling transport

所以作为引用,我在 list 中添加了:

<application
android:allowBackup="true"
android:backupAgent="com.kcoppock.sudoku.SudokuBackupAgent"

还有

<meta-data
android:name="com.google.android.backup.api_key"
android:value="my_key_goes_here" />

我的 BackupAgentHelper 是这样实现的:

public class SudokuBackupAgent extends BackupAgentHelper {
static final String SCORES = "SCORES";
static final String BACKUP_ID = "sudoku_backup";

@Override
public void onCreate() {
SharedPreferencesBackupHelper backupHelper =
new SharedPreferencesBackupHelper(this, SCORES);
addHelper(BACKUP_ID, backupHelper);
}
}

最后,在我的主要 Activity 中,我要求像这样进行数据备份:

edit.putString(id + "_values", valueCache.toString());
edit.putString(id + "_hints", hintCache.toString());
edit.commit();
BackupManager backup = new BackupManager(this);
backup.dataChanged();

我尝试过调试,似乎我在 SudokuBackupAgent 中的 onCreate() 从未被调用过。或者至少它从未从调试器中得到。似乎没有找到任何更新的数据,我已经仔细检查以确保有数据要备份。我这里有什么遗漏吗?

编辑:我应该补充一下,我正在设备(Galaxy Nexus)上进行测试,我什至尝试使用导出的发行版 APK 进行测试。

最佳答案

1) 将 Log.i() 放入你的 onCreate 中,看看它是否被调用。

2) Logcat 表明你的函数没有写任何东西。检查您的应用程序的私有(private)文件夹中是否有 shared_prefs/SCORES 文件(假设在根设备上使用适当的文件管理器)。这是您尝试备份的文件。可能您的首选项文件不是这个文件,在这种情况下修复您的字符串分数以反射(reflect)真实的首选项文件。

3)我尝试在我的应用程序中调试BackupAgentHelper.onCreate,调用adb shell bmgt后可以调试它...所以可以在调试器中单步执行。

关于android - BackupManager 不调用备份传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11377313/

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