diff options
| author | Android (Google) Code Review <android-gerrit@google.com> | 2009-06-04 16:01:41 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-06-04 16:01:41 -0700 |
| commit | 54de90635e1d0628c396d65e6c948bf4a1529229 (patch) | |
| tree | 56df1880cb82d7d5cfb0ef6cb1093df1ed749398 | |
| parent | 12bba912238f305d385b30c278a4bdbb027b7a03 (diff) | |
| parent | 1885b37913181230c36d6485bdd389f89fa90f43 (diff) | |
| download | frameworks_base-54de90635e1d0628c396d65e6c948bf4a1529229.zip frameworks_base-54de90635e1d0628c396d65e6c948bf4a1529229.tar.gz frameworks_base-54de90635e1d0628c396d65e6c948bf4a1529229.tar.bz2 | |
Merge change 3243 into donut
* changes:
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); |
