diff options
Diffstat (limited to 'src/com/android/launcher3/LauncherBackupAgentHelper.java')
-rw-r--r-- | src/com/android/launcher3/LauncherBackupAgentHelper.java | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/com/android/launcher3/LauncherBackupAgentHelper.java b/src/com/android/launcher3/LauncherBackupAgentHelper.java index 2b5059b72..de6aedddd 100644 --- a/src/com/android/launcher3/LauncherBackupAgentHelper.java +++ b/src/com/android/launcher3/LauncherBackupAgentHelper.java @@ -18,12 +18,22 @@ package com.android.launcher3; import android.app.backup.BackupAgentHelper; import android.app.backup.BackupManager; +import android.app.backup.SharedPreferencesBackupHelper; import android.content.Context; +import android.content.SharedPreferences; +import android.provider.Settings; +import android.util.Log; public class LauncherBackupAgentHelper extends BackupAgentHelper { + private static final String TAG = "LauncherBackupAgentHelper"; + static final boolean VERBOSE = true; + static final boolean DEBUG = false; + private static BackupManager sBackupManager; + protected static final String SETTING_RESTORE_ENABLED = "launcher_restore_enabled"; + /** * Notify the backup manager that out database is dirty. * @@ -38,9 +48,27 @@ public class LauncherBackupAgentHelper extends BackupAgentHelper { sBackupManager.dataChanged(); } + @Override + public void onDestroy() { + // There is only one process accessing this preference file, but the restore + // modifies the file outside the normal codepaths, so it looks like another + // process. This forces a reload of the file, in case this process persists. + String spKey = LauncherAppState.getSharedPreferencesKey(); + SharedPreferences sp = getSharedPreferences(spKey, Context.MODE_MULTI_PROCESS); + super.onDestroy(); + } @Override public void onCreate() { - addHelper(LauncherBackupHelper.LAUNCHER_PREFIX, new LauncherBackupHelper(this)); + boolean restoreEnabled = 0 != Settings.Secure.getInt( + getContentResolver(), SETTING_RESTORE_ENABLED, 0); + if (VERBOSE) Log.v(TAG, "restore is " + (restoreEnabled ? "enabled" : "disabled")); + + addHelper(LauncherBackupHelper.LAUNCHER_PREFS_PREFIX, + new LauncherPreferencesBackupHelper(this, + LauncherAppState.getSharedPreferencesKey(), + restoreEnabled)); + addHelper(LauncherBackupHelper.LAUNCHER_PREFIX, + new LauncherBackupHelper(this, restoreEnabled)); } } |