Full backup tweaks

* provide placeholder UI showing backup/restore start/stop/timeout
* don't kill the progress UI in mid stream
* tidy up the pax extended header data writing a little

Change-Id: Ife0cb78e3facb541d8327f1d5ca5fe77faa6cbca
This commit is contained in:
Christopher Tate
2011-05-13 15:38:02 -07:00
parent 83a7cdc565
commit dc92c82b41
3 changed files with 33 additions and 24 deletions

View File

@@ -1710,8 +1710,7 @@ class BackupManagerService extends IBackupManager.Stub {
IApplicationThread.BACKUP_MODE_FULL);
if (agent != null) {
try {
ApplicationInfo app = mPackageManager.getApplicationInfo(
pkg.packageName, 0);
ApplicationInfo app = pkg.applicationInfo;
boolean sendApk = mIncludeApks
&& ((app.flags & ApplicationInfo.FLAG_FORWARD_LOCK) == 0)
&& ((app.flags & ApplicationInfo.FLAG_SYSTEM) == 0 ||
@@ -1742,9 +1741,6 @@ class BackupManagerService extends IBackupManager.Stub {
} else {
if (DEBUG) Slog.d(TAG, "Full backup success: " + pkg.packageName);
}
} catch (NameNotFoundException e) {
Slog.e(TAG, "Package exists but not app info; skipping: "
+ pkg.packageName);
} catch (IOException e) {
Slog.e(TAG, "Error backing up " + pkg.packageName, e);
}
@@ -1816,8 +1812,11 @@ class BackupManagerService extends IBackupManager.Stub {
// unbind and tidy up even on timeout or failure, just in case
mActivityManager.unbindBackupAgent(app);
// The agent was running with a stub Application object, so shut it down
if (app.uid != Process.SYSTEM_UID) {
// The agent was running with a stub Application object, so shut it down.
// !!! We hardcode the confirmation UI's package name here rather than use a
// manifest flag! TODO something less direct.
if (app.uid != Process.SYSTEM_UID
&& !pkg.packageName.equals("com.android.backupconfirm")) {
if (DEBUG) Slog.d(TAG, "Backup complete, killing host process");
mActivityManager.killApplicationProcess(app.processName, app.uid);
} else {