Quellcode durchsuchen

1.添加进程判断防止多次创建socket

20241218TB223FC(测试jar包)
wangwanlei vor 10 Monaten
Ursprung
Commit
cbf71d03ad

+ 38
- 29
app/src/main/java/com/xhly/manageapp/ManageApplication.kt Datei anzeigen

@@ -16,6 +16,7 @@ import com.xhly.corelib.utils.GsonUtils
16 16
 import com.xhly.corelib.utils.LogShow
17 17
 import com.xhly.corelib.utils.ModelNameUtils
18 18
 import com.xhly.corelib.utils.SharedPreferencesUtils
19
+import com.xhly.corelib.utils.SystemUtil
19 20
 import com.xhly.manageapp.bean.user.UserBean
20 21
 import com.xhly.manageapp.service.websocket.AppSocket
21 22
 import com.xhly.manageapp.utils.CurrentAppSharedPreferencesUtils
@@ -617,41 +618,49 @@ class ManageApplication : MultiDexApplication() {
617 618
 
618 619
     override fun onCreate() {
619 620
         super.onCreate()
620
-        instance = this
621
-        val spUtils=SharedPreferencesUtils.getInstance(this)
622
-        //获取是否已经解除管控
623
-        val currentSpUtils by lazy { CurrentAppSharedPreferencesUtils.getInstance(this) }
624
-        val exitControlFlag = currentSpUtils.getParam(Const.EXIT_CONTROL, false) as Boolean
625
-        Toaster.init(this)
626
-        DialogX.init(this)
627
-        if (ModelNameUtils.IS_LianxX505f()){
628
-            csdkManager = CSDKManager(this)
629
-            //允许运行时权限
630
-            setRuntimePermissions(true)
631
-        }
632
-        //如果解除管控为真,则不在执行以下代码
633
-        try {
634
-            val userBean = spUtils.getFromJson(
635
-                Const.USERINFO, UserBean().javaClass
636
-            ) as UserBean
637
-            Const.USERID=userBean.userid
638
-            Const.SCHOOLID=userBean.schoolid
639
-            Const.CLASSID=userBean.classid
640
-            Const.USERNAME=userBean.username
641
-            if (!exitControlFlag){
642
-                //未解除管控才使用socket
643
-                AppSocket.startSocket(this)
621
+        val processName = SystemUtil.getProcessName(this, android.os.Process.myPid())
622
+        if (processName!=null&&processName.equals(packageName)){
623
+            instance = this
624
+            val spUtils=SharedPreferencesUtils.getInstance(this)
625
+            //获取是否已经解除管控
626
+            val currentSpUtils by lazy { CurrentAppSharedPreferencesUtils.getInstance(this) }
627
+            val exitControlFlag = currentSpUtils.getParam(Const.EXIT_CONTROL, false) as Boolean
628
+            Toaster.init(this)
629
+            DialogX.init(this)
630
+            if (ModelNameUtils.IS_LianxX505f()){
631
+                csdkManager = CSDKManager(this)
632
+                //允许运行时权限
633
+                setRuntimePermissions(true)
644 634
             }
645
-        }catch (e:Exception){
635
+            //如果解除管控为真,则不在执行以下代码
636
+            try {
637
+                val userBean = spUtils.getFromJson(
638
+                    Const.USERINFO, UserBean().javaClass
639
+                ) as UserBean
640
+                Const.USERID=userBean.userid
641
+                Const.SCHOOLID=userBean.schoolid
642
+                Const.CLASSID=userBean.classid
643
+                Const.USERNAME=userBean.username
644
+                if (!exitControlFlag){
645
+                    //未解除管控才使用socket
646
+                    AppSocket.startSocket(this)
647
+                }
648
+            }catch (e:Exception){
646 649
 
647
-        }
648
-        if (!exitControlFlag){
649
-             StrategyUtils.initControlStrategy()
650
+            }
651
+            if (!exitControlFlag){
652
+                StrategyUtils.initControlStrategy()
653
+            }
650 654
         }
651 655
     }
652 656
 
657
+
658
+
653 659
     override fun onTerminate() {
654 660
         super.onTerminate()
655
-        AppSocket.onDestroy()
661
+        val processName = SystemUtil.getProcessName(this, android.os.Process.myPid())
662
+        if (processName!=null&&processName.equals(packageName)){
663
+            AppSocket.onDestroy()
664
+        }
656 665
     }
657 666
 }

+ 18
- 0
corelib/src/main/java/com/xhly/corelib/utils/SystemUtil.java Datei anzeigen

@@ -1,6 +1,7 @@
1 1
 package com.xhly.corelib.utils;
2 2
 
3 3
 import android.Manifest;
4
+import android.app.ActivityManager;
4 5
 import android.bluetooth.BluetoothAdapter;
5 6
 import android.content.Context;
6 7
 import android.content.pm.PackageInfo;
@@ -320,4 +321,21 @@ public class SystemUtil {
320 321
             return false;
321 322
         }
322 323
     }
324
+
325
+    public static String getProcessName(Context cxt, int pid) {
326
+        //获取ActivityManager对象
327
+        ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACTIVITY_SERVICE);
328
+        //在运行的进程的
329
+        List<ActivityManager.RunningAppProcessInfo> runningApps = am.getRunningAppProcesses();
330
+        if (runningApps == null) {
331
+            return null;
332
+        }
333
+        for (ActivityManager.RunningAppProcessInfo procInfo : runningApps) {
334
+            if (procInfo.pid == pid) {
335
+                return procInfo.processName;
336
+            }
337
+        }
338
+        return null;
339
+    }
340
+
323 341
 }

Laden…
Abbrechen
Speichern