There is a code:

public class BackupHelper extends BackupAgentHelper { public static final Object[] DATA_LOCK = new Object[0]; @Override public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) throws IOException { synchronized (DATA_LOCK) { super.onBackup(oldState, data, newState); } Log.d("BackupHelper", "onBackup()"); } @Override public void onCreate(){ FileBackupHelper db = new FileBackupHelper(this, DatabaseHelper.DATABASE_NAME); addHelper(DatabaseHelper.DATABASE_NAME, db); Log.d("BackupHelper", "onCreate()"); } @Override public File getFilesDir(){ File path = getDatabasePath(DatabaseHelper.DATABASE_NAME); return path.getParentFile(); } @Override public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) throws IOException { Log.d("BackupHelper", "onRestore()"); synchronized (DATA_LOCK) { super.onRestore(data, appVersionCode, newState); } } } 

The manifest spelled:

 android:allowBackup="true" android:fullBackupOnly="true" android:backupInForeground="true" android:backupAgent=".app.db.BackupHelper" 

I call this:

 private BackupManager backupManager; backupManager = new BackupManager(context); 

But even the logs from BackupHelper does not show. Maybe I'm doing something wrong? help please, I suffer a day.

    1 answer 1

    In general, we can say solved the problem. The fact is that the android itself decides when to make backup, and you need to either wait or help to disable / enable synchronization.