summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/pm/BackgroundDexOptService.java9
1 files changed, 6 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/pm/BackgroundDexOptService.java b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
index 2ce2dfe407f5..da9cd8b88234 100644
--- a/services/core/java/com/android/server/pm/BackgroundDexOptService.java
+++ b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
@@ -168,15 +168,18 @@ public class BackgroundDexOptService extends JobService {
// Skip previously failing package
continue;
}
+ // Conservatively add package to the list of failing ones in case performDexOpt
+ // never returns.
+ sFailedPackageNames.add(pkg);
// Optimize package if needed. Note that there can be no race between
// concurrent jobs because PackageDexOptimizer.performDexOpt is synchronized.
- if (!pm.performDexOpt(pkg,
+ if (pm.performDexOpt(pkg,
/* instruction set */ null,
/* checkProfiles */ true,
PackageManagerService.REASON_BACKGROUND_DEXOPT,
/* force */ false)) {
- // Dexopt failed, remember this so we do not keep retrying.
- sFailedPackageNames.add(pkg);
+ // Dexopt succeeded, remove package from the list of failing ones.
+ sFailedPackageNames.remove(pkg);
}
}
// Ran to completion, so we abandon our timeslice and do not reschedule.