From 53fec857a0760ce5de0f7bfac9c293e2dc80691f Mon Sep 17 00:00:00 2001 From: Nullptr <52071314+Dr-TSNG@users.noreply.github.com> Date: Sun, 8 Jan 2023 23:48:07 +0800 Subject: [PATCH] Clear uid set on registerUidObserver --- .../java/org/lsposed/lspd/service/LSPModuleService.java | 7 ++++++- .../main/java/org/lsposed/lspd/service/LSPosedService.java | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/daemon/src/main/java/org/lsposed/lspd/service/LSPModuleService.java b/daemon/src/main/java/org/lsposed/lspd/service/LSPModuleService.java index bfb570c8..6c45cf46 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/LSPModuleService.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/LSPModuleService.java @@ -36,6 +36,7 @@ import org.lsposed.daemon.BuildConfig; import org.lsposed.lspd.models.Module; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; @@ -50,13 +51,17 @@ public class LSPModuleService extends IXposedService.Stub { private final static String TAG = "LSPosedModuleService"; private final static Set uidSet = ConcurrentHashMap.newKeySet(); - private final static Map serviceMap = new WeakHashMap<>(); + private final static Map serviceMap = Collections.synchronizedMap(new WeakHashMap<>()); public final static String FILES_DIR = "files"; private final @NonNull Module loadedModule; + static void uidClear() { + uidSet.clear(); + } + static void uidStarts(int uid) { if (!uidSet.contains(uid)) { uidSet.add(uid); diff --git a/daemon/src/main/java/org/lsposed/lspd/service/LSPosedService.java b/daemon/src/main/java/org/lsposed/lspd/service/LSPosedService.java index b117bf33..7d0efab8 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/LSPosedService.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/LSPosedService.java @@ -394,6 +394,7 @@ public class LSPosedService extends ILSPosedService.Stub { | HiddenApiBridge.ActivityManager_UID_OBSERVER_GONE() | HiddenApiBridge.ActivityManager_UID_OBSERVER_IDLE() | HiddenApiBridge.ActivityManager_UID_OBSERVER_CACHED(); + LSPModuleService.uidClear(); ActivityManagerService.registerUidObserver(new IUidObserver.Stub() { @Override public void onUidActive(int uid) {