diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2015-01-20 19:39:40 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2015-01-20 19:39:40 +0000 |
commit | 295a17aabb3287c8b1f240e4444c0061f427c0b9 (patch) | |
tree | b114a17fbe14792189b65fc3ce0814558b183994 /src | |
parent | 6d33ad7afb35887fcccfb275f0d602b6e4829fdc (diff) | |
parent | 2d264802754e78a98ab1a52c39aa4ceef75b32ae (diff) | |
download | android_packages_apps_Trebuchet-295a17aabb3287c8b1f240e4444c0061f427c0b9.tar.gz android_packages_apps_Trebuchet-295a17aabb3287c8b1f240e4444c0061f427c0b9.tar.bz2 android_packages_apps_Trebuchet-295a17aabb3287c8b1f240e4444c0061f427c0b9.zip |
Merge "Avoiding writing the Metadata in the backup if nothing was changed in the backup" into ub-launcher3-almonte
automerge: 2d26480
* commit '2d264802754e78a98ab1a52c39aa4ceef75b32ae':
Avoiding writing the Metadata in the backup if nothing was changed in the backup
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher3/LauncherBackupAgentHelper.java | 2 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherBackupHelper.java | 32 |
2 files changed, 25 insertions, 9 deletions
diff --git a/src/com/android/launcher3/LauncherBackupAgentHelper.java b/src/com/android/launcher3/LauncherBackupAgentHelper.java index 3d7d3f271..ddfd70d6b 100644 --- a/src/com/android/launcher3/LauncherBackupAgentHelper.java +++ b/src/com/android/launcher3/LauncherBackupAgentHelper.java @@ -32,7 +32,7 @@ public class LauncherBackupAgentHelper extends BackupAgentHelper { private static final String LAUNCHER_DATA_PREFIX = "L"; - static final boolean VERBOSE = true; + static final boolean VERBOSE = false; static final boolean DEBUG = false; private static BackupManager sBackupManager; diff --git a/src/com/android/launcher3/LauncherBackupHelper.java b/src/com/android/launcher3/LauncherBackupHelper.java index 4faa8ace8..32bea5baa 100644 --- a/src/com/android/launcher3/LauncherBackupHelper.java +++ b/src/com/android/launcher3/LauncherBackupHelper.java @@ -57,6 +57,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.net.URISyntaxException; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.zip.CRC32; @@ -140,9 +141,9 @@ public class LauncherBackupHelper implements BackupHelper { private IconCache mIconCache; private BackupManager mBackupManager; - private HashMap<ComponentName, AppWidgetProviderInfo> mWidgetMap; private byte[] mBuffer = new byte[512]; private long mLastBackupRestoreTime; + private boolean mBackupDataWasUpdated; private DeviceProfieData mCurrentProfile; boolean restoreSuccessful; @@ -201,7 +202,7 @@ public class LauncherBackupHelper implements BackupHelper { // Record the time before performing backup so that entries edited while the backup // was going on, do not get missed in next backup. long newBackupTime = System.currentTimeMillis(); - + mBackupDataWasUpdated = false; try { backupFavorites(data); backupScreens(data); @@ -219,16 +220,30 @@ public class LauncherBackupHelper implements BackupHelper { for (String deleted: mExistingKeys) { if (VERBOSE) Log.v(TAG, "dropping deleted item " + deleted); data.writeEntityHeader(deleted, -1); + mBackupDataWasUpdated = true; } mExistingKeys.clear(); - mLastBackupRestoreTime = newBackupTime; + if (!mBackupDataWasUpdated) { + // Check if any metadata has changed + mBackupDataWasUpdated = (in.profile == null) + || !Arrays.equals(DeviceProfieData.toByteArray(in.profile), + DeviceProfieData.toByteArray(getDeviceProfieData())) + || (in.backupVersion != BACKUP_VERSION) + || (in.appVersion != getAppVersion()); + } + + if (mBackupDataWasUpdated) { + mLastBackupRestoreTime = newBackupTime; - // We store the journal at two places. - // 1) Storing it in newState allows us to do partial backups by comparing old state - // 2) Storing it in backup data allows us to validate keys during restore - Journal state = getCurrentStateJournal(); - writeRowToBackup(JOURNAL_KEY, state, data); + // We store the journal at two places. + // 1) Storing it in newState allows us to do partial backups by comparing old state + // 2) Storing it in backup data allows us to validate keys during restore + Journal state = getCurrentStateJournal(); + writeRowToBackup(JOURNAL_KEY, state, data); + } else { + if (DEBUG) Log.d(TAG, "Nothing was written during backup"); + } } catch (IOException e) { Log.e(TAG, "launcher backup has failed", e); } @@ -1020,6 +1035,7 @@ public class LauncherBackupHelper implements BackupHelper { byte[] blob = writeCheckedBytes(proto); data.writeEntityHeader(backupKey, blob.length); data.writeEntityData(blob, blob.length); + mBackupDataWasUpdated = true; if (VERBOSE) Log.v(TAG, "Writing New entry " + backupKey); } |