Notify IORap without including packages for secondary dex opt.
The current secondary dex opt doesn't distinct between
opt performed and skipped, which causes unnecessary traces
purge for IORap.
Bug:161633001
Test: manually trigger bg-dexopt via 'adb shell cmd jobscheduler run -f
android 800' and check the log.
(cherry picked from commit ff800a363bbdec0eaac0960340689a20ebc9bf7a)
Merged-In: Iae4fc0b6fc73707ada8895b38c3ae3f772ac2cd0
Change-Id: Iae4fc0b6fc73707ada8895b38c3ae3f772ac2cd0
(cherry picked from commit 9b4958afb079bc2907d62f1bba8ca11d22c6f2c5)
diff --git a/services/core/java/com/android/server/pm/BackgroundDexOptService.java b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
index 5415967..d48570f 100644
--- a/services/core/java/com/android/server/pm/BackgroundDexOptService.java
+++ b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
@@ -337,6 +337,7 @@
private int idleOptimizePackages(PackageManagerService pm, ArraySet<String> pkgs,
long lowStorageThreshold) {
ArraySet<String> updatedPackages = new ArraySet<>();
+ ArraySet<String> updatedPackagesDueToSecondaryDex = new ArraySet<>();
try {
final boolean supportSecondaryDex = supportSecondaryDex();
@@ -391,11 +392,14 @@
}
int secondaryResult = optimizePackages(pm, pkgs, lowStorageThreshold,
- /*isForPrimaryDex*/ false, updatedPackages);
+ /*isForPrimaryDex*/ false, updatedPackagesDueToSecondaryDex);
return secondaryResult;
} finally {
// Always let the pinner service know about changes.
notifyPinService(updatedPackages);
+ // Only notify IORap the primary dex opt, because we don't want to
+ // invalidate traces unnecessary due to b/161633001 and that it's
+ // better to have a trace than no trace at all.
notifyPackagesUpdated(updatedPackages);
}
}