Я пытаюсь реализовать пользовательский backupAgentHelper
для резервного копирования файла базы данных моего приложения. Я просмотрел документы несколько раз, но всякий раз, когда я пытаюсь создать резервную копию, backupAgentHelper
на Create/onBackup/onRestore
никогда не вызывается.Android BackupAgent никогда не назывался
манифеста имеет следующие применения: при
android:allowBackup="true"
android:backupAgent="myBackupHelper"
android:restoreAnyVersion="true"
и метаданных
<meta-data
android:name="com.google.android.backup.api_key"
android:value="<my-api-key>" />
myBackupHelper:
public class myBackupHelper extends BackupAgentHelper{
public static String DATABASE_NAME = "db.dat";
@Override
public void onCreate(){
log.d("Backup oncreate called");
FileBackupHelper hosts = new FileBackupHelper(this, this.getExternalFilesDir(DATABASE_NAME).getAbsolutePath());
addHelper(DATABASE_NAME,hosts);
}
@Override
public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) {
log.d("backup onbackup called");
try {
//class is the lock since we are using static synchronized methods to read/write
synchronized (DBManager.class) {
super.onBackup(oldState, data, newState);
log.d("Backedup");
}
} catch (IOException e) {
log.d("Backup error, Unable to write to file: " + e);
}
}
@Override
public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState){
log.d("Backup onrestore called");
try {
//class is the lock since we are using static synchronized methods to read/write
synchronized (DBManager.class) {
super.onRestore(data, appVersionCode, newState);
}
} catch (IOException e) {
log.d("Backup error, Unable to read from file: " + e);
}
}
Я инициализировать BackupManager в mainactivity следующим образом:
BackupManager bm = new BackupManager(getApplicationContext());
и позвоните по номеру bm.dataChanged();
при изменении базы данных.
В ходе тестирования, я использую ADB, чтобы заставить резервную копию:
./adb shell bmgr backup com.test.android.backuptest
./adb shell bmgr run
но журналы никогда не попали и, когда я переустановить, данные не восстанавливаются.
Примечание: настройки резервного копирования и восстановления включены, а устройство имеет требуемый api 8, поэтому я понятия не имею, почему его не ударили!
Как называется ваш класс Backup Manager? – sockeqwe
Что это значит? У меня нет специального класса для BackupManager и используется андроид. – hphu