diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-06-05 00:29:36 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-06-05 00:29:36 -0700 |
commit | 9c4125e268d10eb2c4f26ce5c1ac32bf90181c51 (patch) | |
tree | 16e263a14adc73c21146af8e000ad4c53b74f911 | |
parent | 49f372210b09c461f7c32dddd9170f9e8dad076f (diff) | |
parent | 54de90635e1d0628c396d65e6c948bf4a1529229 (diff) | |
download | frameworks_base-9c4125e268d10eb2c4f26ce5c1ac32bf90181c51.zip frameworks_base-9c4125e268d10eb2c4f26ce5c1ac32bf90181c51.tar.gz frameworks_base-9c4125e268d10eb2c4f26ce5c1ac32bf90181c51.tar.bz2 |
am 54de9063: Merge change 3243 into donut
Merge commit '54de90635e1d0628c396d65e6c948bf4a1529229'
* commit '54de90635e1d0628c396d65e6c948bf4a1529229':
Fix backup agent unbind
-rw-r--r-- | core/java/android/app/ApplicationThreadNative.java | 8 | ||||
-rw-r--r-- | services/java/com/android/server/BackupManagerService.java | 41 |
2 files changed, 9 insertions, 40 deletions
diff --git a/core/java/android/app/ApplicationThreadNative.java b/core/java/android/app/ApplicationThreadNative.java index e28fd0f..6750d12 100644 --- a/core/java/android/app/ApplicationThreadNative.java +++ b/core/java/android/app/ApplicationThreadNative.java @@ -350,6 +350,14 @@ public abstract class ApplicationThreadNative extends Binder scheduleCreateBackupAgent(appInfo, backupMode); return true; } + + case SCHEDULE_DESTROY_BACKUP_AGENT_TRANSACTION: + { + data.enforceInterface(IApplicationThread.descriptor); + ApplicationInfo appInfo = ApplicationInfo.CREATOR.createFromParcel(data); + scheduleDestroyBackupAgent(appInfo); + return true; + } } return super.onTransact(code, data, reply, flags); 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 @@ 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); |