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.
diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java
index b003e76..5770a77 100644
--- a/services/java/com/android/server/BackupManagerService.java
+++ b/services/java/com/android/server/BackupManagerService.java
@@ -197,7 +197,6 @@
// 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 @@
}
}
- 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 @@
// 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);