Merge change 3243 into donut
* changes: Fix backup agent unbind
This commit is contained in:
@@ -350,6 +350,14 @@ public abstract class ApplicationThreadNative extends Binder
|
|||||||
scheduleCreateBackupAgent(appInfo, backupMode);
|
scheduleCreateBackupAgent(appInfo, backupMode);
|
||||||
return true;
|
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);
|
return super.onTransact(code, data, reply, flags);
|
||||||
|
|||||||
@@ -197,7 +197,6 @@ class BackupManagerService extends IBackupManager.Stub {
|
|||||||
// WARNING: If we crash after this line, anything in mPendingBackups will
|
// WARNING: If we crash after this line, anything in mPendingBackups will
|
||||||
// be lost. FIX THIS.
|
// be lost. FIX THIS.
|
||||||
}
|
}
|
||||||
//startOneAgent();
|
|
||||||
(new PerformBackupThread(mTransportId, mBackupQueue)).run();
|
(new PerformBackupThread(mTransportId, mBackupQueue)).run();
|
||||||
break;
|
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) {
|
void processOneBackup(BackupRequest request, IBackupAgent agent, IBackupTransport transport) {
|
||||||
final String packageName = request.appInfo.packageName;
|
final String packageName = request.appInfo.packageName;
|
||||||
Log.d(TAG, "processOneBackup doBackup() on " + 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
|
// Now propagate the newly-backed-up data to the transport
|
||||||
if (success) {
|
if (success) {
|
||||||
|
if (DEBUG) Log.v(TAG, "doBackup() success; calling transport");
|
||||||
backupData =
|
backupData =
|
||||||
ParcelFileDescriptor.open(backupDataName, ParcelFileDescriptor.MODE_READ_ONLY);
|
ParcelFileDescriptor.open(backupDataName, ParcelFileDescriptor.MODE_READ_ONLY);
|
||||||
int error = transport.performBackup(packageName, backupData);
|
int error = transport.performBackup(packageName, backupData);
|
||||||
|
|||||||
Reference in New Issue
Block a user