Fix backup agent unbind

The handwritten binder transaction passing wasn't propagating the agent-destroy
transaction to the client side.  Oops.

Also, remove obsolete run-one-agent code from the backup manager service.
This commit is contained in:
Christopher Tate
2009-06-04 15:00:33 -07:00
parent b640da8fcb
commit 1885b37913
2 changed files with 9 additions and 40 deletions

View File

@ -197,7 +197,6 @@ class BackupManagerService extends IBackupManager.Stub {
// WARNING: If we crash after this line, anything in mPendingBackups will
// be lost. FIX THIS.
}
//startOneAgent();
(new PerformBackupThread(mTransportId, mBackupQueue)).run();
break;
@ -207,45 +206,6 @@ class BackupManagerService extends IBackupManager.Stub {
}
}
void startOneAgent() {
// Loop until we find someone to start or the queue empties out.
while (true) {
BackupRequest request;
synchronized (mQueueLock) {
int queueSize = mBackupQueue.size();
Log.d(TAG, "mBackupQueue.size=" + queueSize);
if (queueSize == 0) {
mBackupQueue = null;
// if there are pending backups, start those after a short delay
if (mPendingBackups.size() > 0) {
mBackupHandler.sendEmptyMessageDelayed(MSG_RUN_BACKUP, COLLECTION_INTERVAL);
}
return;
}
request = mBackupQueue.get(0);
// Take it off the queue when we're done.
}
Log.d(TAG, "starting agent for " + request);
// !!! TODO: need to handle the restore case?
int mode = (request.fullBackup)
? IApplicationThread.BACKUP_MODE_FULL
: IApplicationThread.BACKUP_MODE_INCREMENTAL;
try {
if (mActivityManager.bindBackupAgent(request.appInfo, mode)) {
Log.d(TAG, "awaiting agent for " + request);
// success
return;
}
} catch (RemoteException e) {
// can't happen; activity manager is local
} catch (SecurityException ex) {
// Try for the next one.
Log.d(TAG, "error in bind", ex);
}
}
}
void processOneBackup(BackupRequest request, IBackupAgent agent, IBackupTransport transport) {
final String packageName = request.appInfo.packageName;
Log.d(TAG, "processOneBackup doBackup() on " + packageName);
@ -290,6 +250,7 @@ class BackupManagerService extends IBackupManager.Stub {
// Now propagate the newly-backed-up data to the transport
if (success) {
if (DEBUG) Log.v(TAG, "doBackup() success; calling transport");
backupData =
ParcelFileDescriptor.open(backupDataName, ParcelFileDescriptor.MODE_READ_ONLY);
int error = transport.performBackup(packageName, backupData);