diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/BackgroundDexOptService.java | 9 |
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. |