diff --git a/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java b/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java index 4bd266d2..f19bf5ff 100644 --- a/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java +++ b/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java @@ -451,6 +451,7 @@ public class ConfigManager { final var obsoletePackages = new HashSet(); final var obsoleteModules = new HashSet(); final var moduleAvailability = new HashMap, Boolean>(); + final var cachedProcessScope = new HashMap, List>(); while (cursor.moveToNext()) { Application app = new Application(); app.packageName = cursor.getString(appPkgNameIdx); @@ -478,7 +479,13 @@ public class ConfigManager { if (app.packageName.equals("android")) continue; try { - List processesScope = getAssociatedProcesses(app); + List processesScope = cachedProcessScope.computeIfAbsent(new Pair<>(app.packageName, app.userId), (k) -> { + try { + return getAssociatedProcesses(app); + } catch (RemoteException e) { + return Collections.emptyList(); + } + }); if (processesScope.isEmpty()) { obsoletePackages.add(app); continue;