Хорошо, поэтому я пытаюсь реализовать Data Backup в своем приложении и следую этому руководству. Я выполнил мой BackupAgentHelper
с помощью SharedPreferencesBackupHelper
. Я не получаю никаких ошибок, и я обязательно позвоню dataChanged()
после всех изменений предпочтений, но когда я тестирую резервную копию ( "запуск bmgr для adb shell" ), я получаю эту информацию в 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 @[email protected]
07-07 12:29:00.297: I/PerformBackupTask(291): no backup data written; not calling transport
Итак, для справки, в моем манифесте я добавил:
<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);
}
}
и, наконец, в моем основном действии я вызываю резервное копирование данных следующим образом:
edit.putString(id + "_values", valueCache.toString());
edit.putString(id + "_hints", hintCache.toString());
edit.commit();
BackupManager backup = new BackupManager(this);
backup.dataChanged();
Я пробовал отлаживать, и кажется, что мой onCreate()
в SudokuBackupAgent
никогда не вызывается. Или, по крайней мере, это никогда не достигалось от отладчика. Кажется, он не находит какие-либо обновленные данные, и я дважды проверял, чтобы они обеспечивали резервную копию данных. Здесь что-то не хватает?
EDIT: я должен добавить, я тестирую на устройстве (Galaxy Nexus), и я даже пытался использовать APK с экспортированным выпуском для тестирования.