From 3fab6d45426f312ea94b2f6246bbea72452b3a71 Mon Sep 17 00:00:00 2001 From: Matthew Date: Tue, 22 Apr 2025 12:21:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E6=B4=BB=E6=97=B6=E5=88=A4=E6=96=ADse?= =?UTF-8?q?rvice=E6=98=AF=E5=90=A6=E5=AD=98=E5=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/xypower/mpapp/MicroPhotoService.java | 2 +- .../main/java/com/xypower/common/MicroPhotoContext.java | 8 ++++++-- .../main/java/com/xypower/mpmaster/MpMasterService.java | 2 +- .../main/java/com/xypower/mpmaster/UpdateReceiver.java | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index caa76aa3..77b1f7cf 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -472,7 +472,7 @@ public class MicroPhotoService extends Service { } try { - boolean mpmstAlive = MicroPhotoContext.isAppAlive(context, MicroPhotoContext.PACKAGE_NAME_MPMASTER); + boolean mpmstAlive = MicroPhotoContext.isAppAlive(context, MicroPhotoContext.PACKAGE_NAME_MPMASTER, MicroPhotoContext.SERVICE_NAME_MPMASTER); if (!mpmstAlive) { Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(MicroPhotoContext.PACKAGE_NAME_MPMASTER); // launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); diff --git a/common/src/main/java/com/xypower/common/MicroPhotoContext.java b/common/src/main/java/com/xypower/common/MicroPhotoContext.java index 9a3962f9..98d7f5d2 100644 --- a/common/src/main/java/com/xypower/common/MicroPhotoContext.java +++ b/common/src/main/java/com/xypower/common/MicroPhotoContext.java @@ -30,6 +30,10 @@ public class MicroPhotoContext { public static final String PACKAGE_NAME_MPAPP = "com.xypower.mpapp"; public static final String PACKAGE_NAME_MPMASTER = "com.xypower.mpmaster"; + + public static final String SERVICE_NAME_MPSERVICE = PACKAGE_NAME_MPAPP + ".MicroPhotoService"; + + public static final String SERVICE_NAME_MPMASTER = PACKAGE_NAME_MPMASTER + ".MpMasterService"; public static final String ACTION_HEARTBEAT_MP = "com.xypower.mpapp.ACT_HB"; public static final String ACTION_RESTART_MP = "com.xypower.mpapp.ACT_RESTART"; public static final String ACTION_UPDATE_CONFIGS_MP = "com.xypower.mpapp.ACT_UPD_CFG"; @@ -141,13 +145,13 @@ public class MicroPhotoContext { return str; } - public static boolean isAppAlive(Context context, String packageName) { + public static boolean isAppAlive(Context context, String packageName, String serviceClassName) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List services = am.getRunningServices(Integer.MAX_VALUE); boolean isRunning = false; for (ActivityManager.RunningServiceInfo rsi : services) { - if (packageName.equalsIgnoreCase(rsi.service.getPackageName())) { + if (packageName.equalsIgnoreCase(rsi.service.getPackageName()) && TextUtils.equals(serviceClassName, rsi.service.getClassName())) { isRunning = true; break; } diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java index 28860284..8c67350f 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java @@ -425,7 +425,7 @@ public class MpMasterService extends Service { } boolean isMpAppRunning = false; for (int idx = 0; idx < detectionCnt; idx++) { - isMpAppRunning = MicroPhotoContext.isAppAlive(context, MicroPhotoContext.PACKAGE_NAME_MPAPP); + isMpAppRunning = MicroPhotoContext.isAppAlive(context, MicroPhotoContext.PACKAGE_NAME_MPAPP, MicroPhotoContext.SERVICE_NAME_MPSERVICE); if (isMpAppRunning) { break; } diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/UpdateReceiver.java b/mpmaster/src/main/java/com/xypower/mpmaster/UpdateReceiver.java index 8c152507..15b08b34 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/UpdateReceiver.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/UpdateReceiver.java @@ -95,7 +95,7 @@ public class UpdateReceiver extends BroadcastReceiver { private void startMpApp(final Context context, String reason) { try { - if (MicroPhotoContext.isAppAlive(context, MicroPhotoContext.PACKAGE_NAME_MPAPP)) { + if (MicroPhotoContext.isAppAlive(context, MicroPhotoContext.PACKAGE_NAME_MPAPP, MicroPhotoContext.SERVICE_NAME_MPSERVICE)) { return; }