Use new method/field to get StagedApexInfo[]
This reduces the calls to the heavy operation
(IApexService.getStagedApexInfos) a lot.
Bug: 370712193
Test: Presubmit
Change-Id: Ie67b468b1b7474ae88da144b7c4ba1072810e8f5
diff --git a/android/virtmgr/src/payload.rs b/android/virtmgr/src/payload.rs
index 81e02b7..5811314 100644
--- a/android/virtmgr/src/payload.rs
+++ b/android/virtmgr/src/payload.rs
@@ -178,14 +178,9 @@
let pm =
wait_for_interface::<dyn IPackageManagerNative>(PACKAGE_MANAGER_NATIVE_SERVICE)
.context("Failed to get service when prefer_staged is set.")?;
- let staged =
- pm.getStagedApexModuleNames().context("getStagedApexModuleNames failed")?;
- for name in staged {
- if let Some(staged_apex_info) =
- pm.getStagedApexInfo(&name).context("getStagedApexInfo failed")?
- {
- list.override_staged_apex(&staged_apex_info)?;
- }
+ let staged = pm.getStagedApexInfos().context("getStagedApexInfos failed")?;
+ for apex in staged {
+ list.override_staged_apex(&apex)?;
}
}
Ok(list)
diff --git a/libs/service-compos/java/com/android/server/compos/IsolatedCompilationService.java b/libs/service-compos/java/com/android/server/compos/IsolatedCompilationService.java
index 95e365d..ab8a4cf 100644
--- a/libs/service-compos/java/com/android/server/compos/IsolatedCompilationService.java
+++ b/libs/service-compos/java/com/android/server/compos/IsolatedCompilationService.java
@@ -104,7 +104,7 @@
packageNative.registerStagedApexObserver(observer);
// In the unlikely event that an APEX has been staged before we get here, we may
// have to schedule compilation immediately.
- observer.checkModules(packageNative.getStagedApexModuleNames());
+ observer.checkModules(packageNative.getStagedApexInfos());
} catch (RemoteException e) {
Log.e(TAG, "Failed to initialize observer", e);
}
@@ -118,26 +118,21 @@
@Override
public void onApexStaged(ApexStagedEvent event) {
Log.d(TAG, "onApexStaged");
- checkModules(event.stagedApexModuleNames);
+ checkModules(event.stagedApexInfos);
}
- void checkModules(String[] moduleNames) {
+ void checkModules(StagedApexInfo[] stagedApexInfos) {
if (IsolatedCompilationJobService.isStagedApexJobScheduled(mScheduler)) {
Log.d(TAG, "Job already scheduled");
// We're going to run anyway, we don't need to check this update
return;
}
boolean needCompilation = false;
- for (String moduleName : moduleNames) {
- try {
- StagedApexInfo apexInfo = mPackageNative.getStagedApexInfo(moduleName);
- if (apexInfo != null && apexInfo.hasClassPathJars) {
- Log.i(TAG, "Classpath affecting module updated: " + moduleName);
- needCompilation = true;
- break;
- }
- } catch (RemoteException e) {
- Log.w(TAG, "Failed to get getStagedApexInfo for " + moduleName);
+ for (StagedApexInfo apexInfo : stagedApexInfos) {
+ if (apexInfo != null && apexInfo.hasClassPathJars) {
+ Log.i(TAG, "Classpath affecting module updated: " + apexInfo.moduleName);
+ needCompilation = true;
+ break;
}
}
if (needCompilation) {