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) {