summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/LauncherBackupHelper.java
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2015-01-16 14:10:32 -0800
committerSunny Goyal <sunnygoyal@google.com>2015-01-16 14:11:12 -0800
commitc0ee675f69c9c71c5cb51dd2b47bef3d709ea3cd (patch)
tree36b09cc0683e9b263db73e0d5f2cb241022f5a9f /src/com/android/launcher3/LauncherBackupHelper.java
parent08f7261d11a53ae4b330ad4fa897b8519de3d750 (diff)
downloadandroid_packages_apps_Trebuchet-c0ee675f69c9c71c5cb51dd2b47bef3d709ea3cd.tar.gz
android_packages_apps_Trebuchet-c0ee675f69c9c71c5cb51dd2b47bef3d709ea3cd.tar.bz2
android_packages_apps_Trebuchet-c0ee675f69c9c71c5cb51dd2b47bef3d709ea3cd.zip
Avoiding writing the Metadata in the backup if nothing was changed in the backup
Change-Id: I4608ab5511b01f0d0018596d68e4341635649f73
Diffstat (limited to 'src/com/android/launcher3/LauncherBackupHelper.java')
-rw-r--r--src/com/android/launcher3/LauncherBackupHelper.java32
1 files changed, 24 insertions, 8 deletions
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);
}