diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java index 13e6ae04d8585..8fbc52032df51 100644 --- a/services/backup/java/com/android/server/backup/BackupManagerService.java +++ b/services/backup/java/com/android/server/backup/BackupManagerService.java @@ -2400,14 +2400,19 @@ public class BackupManagerService { } final long oldToken = Binder.clearCallingIdentity(); try { + List operationsToCancel = new ArrayList<>(); synchronized (mCurrentOpLock) { for (int i = 0; i < mCurrentOperations.size(); i++) { Operation op = mCurrentOperations.valueAt(i); int token = mCurrentOperations.keyAt(i); if (op.type == OP_TYPE_BACKUP) { - handleCancel(token, true /* cancelAll */); + operationsToCancel.add(token); } } + + for (Integer token : operationsToCancel) { + handleCancel(token, true /* cancelAll */); + } } // We don't want the backup jobs to kick in any time soon.