kco*_*ock 22 backup android sharedpreferences android-backup-service
好吧,所以我正在尝试将数据备份实施到我的应用程序中,并且一直在遵循本指南.我已经实现了我的BackupAgentHelper使用SharedPreferencesBackupHelper.我没有得到任何错误,并且我确定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
Run Code Online (Sandbox Code Playgroud)
所以为了参考,在我的清单中我添加了:
<application
android:allowBackup="true"
android:backupAgent="com.kcoppock.sudoku.SudokuBackupAgent"
Run Code Online (Sandbox Code Playgroud)
以及
<meta-data
android:name="com.google.android.backup.api_key"
android:value="my_key_goes_here" />
Run Code Online (Sandbox Code Playgroud)
我的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);
}
}
Run Code Online (Sandbox Code Playgroud)
最后,在我的主要活动中,我呼吁进行这样的数据备份:
edit.putString(id + "_values", valueCache.toString());
edit.putString(id + "_hints", hintCache.toString());
edit.commit();
BackupManager backup = new BackupManager(this);
backup.dataChanged();
Run Code Online (Sandbox Code Playgroud)
我试着调试,似乎我onCreate()的SudokuBackupAgent永远不会被调用.或者至少从调试器中找不到它.它似乎没有找到任何更新的数据,我已经仔细检查确保有备份的数据.这里有什么我想念的吗?
编辑:我应该补充一点,我正在测试设备(Galaxy Nexus),我甚至尝试使用导出的版本APK进行测试.
1)将Log.i()放入onCreate中,看看它是否被调用。
2)Logcat表明你的函数没有写任何东西。检查应用程序的私有文件夹中是否有shared_prefs/SCORES 文件(假设在已root 的设备上使用适当的文件管理器)。这是您尝试备份的文件。也许您的首选项文件不是此文件,在这种情况下,请修复您的字符串分数以反映真实的首选项文件。
3)我尝试在我的应用程序中调试BackupAgentHelper.onCreate,并且可以在调用adb shell bmgt后对其进行调试...因此可以在调试器中单步执行。
| 归档时间: |
|
| 查看次数: |
5690 次 |
| 最近记录: |