From a8a25a3ae373115f9342c766a7ee241e8ca8f479 Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期二, 15 七月 2025 15:20:34 +0800
Subject: [PATCH] 2025年07月15日15:20:32

---
 app/src/main/java/com/hdl/photovoltaic/HDLApp.java |  161 +++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 112 insertions(+), 49 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/HDLApp.java b/app/src/main/java/com/hdl/photovoltaic/HDLApp.java
index 0f6a697..1af3a6a 100644
--- a/app/src/main/java/com/hdl/photovoltaic/HDLApp.java
+++ b/app/src/main/java/com/hdl/photovoltaic/HDLApp.java
@@ -2,11 +2,14 @@
 
 import android.app.Activity;
 import android.app.ActivityManager;
+import android.app.AlarmManager;
 import android.app.Application;
+import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Configuration;
 import android.os.Build;
+import android.os.Handler;
 import android.os.LocaleList;
 import android.os.Process;
 import android.os.SystemClock;
@@ -19,14 +22,18 @@
 import com.google.gson.Gson;
 import com.hdl.hdlhttp.HxHttpConfig;
 import com.hdl.linkpm.sdk.HDLLinkPMSdk;
+import com.hdl.linkpm.sdk.core.exception.HDLException;
 import com.hdl.linkpm.sdk.user.HDLLinkPMUser;
 import com.hdl.linkpm.sdk.user.callback.IOnReloginListener;
 import com.hdl.linkpm.sdk.utils.HDLSDKSPUtils;
 import com.hdl.photovoltaic.config.AppConfigManage;
 import com.hdl.photovoltaic.config.ConstantManage;
 import com.hdl.photovoltaic.config.UserConfigManage;
+import com.hdl.photovoltaic.enums.LogoutType;
 import com.hdl.photovoltaic.enums.LowerTagType;
 import com.hdl.photovoltaic.enums.NetworkType;
+import com.hdl.photovoltaic.listener.CloudCallBeak;
+import com.hdl.photovoltaic.other.HdlAccountLogic;
 import com.hdl.photovoltaic.other.HdlDeviceLogic;
 import com.hdl.photovoltaic.other.HdlFileLogic;
 import com.hdl.photovoltaic.other.HdlLogLogic;
@@ -91,9 +98,10 @@
     @Override
     public void onCreate() {
         super.onCreate();
-        Log.d("=======", "11111111");
+
 //        // 鑾峰彇褰撳墠杩涚▼鐨凱ID
-//        String processMessage= "杩涚▼ID:"+Process.myPid()+" 杩涚▼鍚嶏細"+RuningAcitvityUtil.getAppName(getBaseContext());
+//        String processMessage = "杩涚▼Uid:" + Process.myUid() + "杩涚▼ID:" + Process.myPid() + " 杩涚▼鍚嶏細" + RuningAcitvityUtil.getAppName(getBaseContext());
+//        Log.d("=======", processMessage);
 //        Log.d(TAG, processMessage);
 //        if (RuningAcitvityUtil.getAppName(getBaseContext()).contains(":")) {
 //            //闈炲師鐢熻繘绋嬶紝鐢ㄥ垵濮嬪寲鍚庨潰鐨�
@@ -233,61 +241,110 @@
         HDLLinkPMUser.getInstance().setOnReloginListener(new IOnReloginListener() {
             @Override
             public void onReLogin(int type) {
-                if (5 == type) {
-                    //鍒囨崲鏈嶅姟鍣ㄥ湴鍧�鐢ㄧ殑
-                    UserConfigManage.getInstance().setOnlineServer(!UserConfigManage.getInstance().isOnlineServer());
+                if (type == LogoutType.ServerSwitchingLogout.getValue()) {
+                    new Handler().postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            //鍒囨崲鏈嶅姟鍣ㄥ湴鍧�鐢ㄧ殑
+                            UserConfigManage.getInstance().setOnlineServer(!UserConfigManage.getInstance().isOnlineServer());
+                            UserConfigManage.getInstance().Save();
+                            restartApp(mHDLApp);
+                        }
+                    }, 500);
+                } else if (type == LogoutType.AbnormalLogout.getValue()) {
+                    //寮傚父鎯呭喌-寮哄埗閲嶅惎搴旂敤
+                    new Handler().postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            restartApp(mHDLApp);
+                        }
+                    }, 500);
+                } else {
+                    HdlLogLogic.print("鐩戝惉鍒扮櫥褰曢��鍑�---" + type, true);
+                    //鍒犻櫎鎺ㄩ�乀oken
+//                    HdlResidenceLogic.getInstance().pushDel(null);
+                    //type:  0:姝e父閫�鍑�   1锛氭瀬鍏夋帹閫佸己鍒堕��鍑�
+                    //鏀跺埌鐧诲綍澶勭悊閫氱煡锛屽叧闂墍鏈夐〉闈㈠苟鎵撳紑鐧诲綍椤甸潰
+                    AppManagerUtils.getAppManager().finishAllActivity();
+                    // HDLSDKSPUtils.clear();//搴曞眰鑷繁娓呯┖
+
+                    //娓呯┖浣忓畢id
+                    UserConfigManage.getInstance().setHomeId("");
+                    //閲嶆柊鐧婚檰,榛樿鍚屾剰闅愮鏀跨瓥
+                    UserConfigManage.getInstance().setAcceiptPolicy(false);
+                    //閲嶆柊璁惧畾涓�涓椂闂�
+                    UserConfigManage.getInstance().setLoginDateTime(0);
                     UserConfigManage.getInstance().Save();
-                    restartApp(mHDLApp);
-                    return;
-                }
 
-                HdlLogLogic.print("鐩戝惉鍒扮櫥褰曢��鍑�---" + type, true);
-                //type:  0:姝e父閫�鍑�   1锛氭瀬鍏夋帹閫佸己鍒堕��鍑�
-                //鏀跺埌鐧诲綍澶勭悊閫氱煡锛屽叧闂墍鏈夐〉闈㈠苟鎵撳紑鐧诲綍椤甸潰
-                AppManagerUtils.getAppManager().finishAllActivity();
-//                HDLSDKSPUtils.clear();//搴曞眰鑷繁娓呯┖
-
-                //娓呯┖浣忓畢id
-                UserConfigManage.getInstance().setHomeId("");
-                //閲嶆柊鐧婚檰,榛樿鍚屾剰闅愮鏀跨瓥
-                UserConfigManage.getInstance().setAcceiptPolicy(false);
-                //閲嶆柊璁惧畾涓�涓椂闂�
-                UserConfigManage.getInstance().setLoginDateTime(0);
-                UserConfigManage.getInstance().Save();
-
-                //娓呯┖娑堟伅缂撳瓨鏁版嵁
-                HdlMessageLogic.getInstance().clearListMessage();
-                //娓呯┖鐢电珯缂撳瓨鏁版嵁
-                HdlResidenceLogic.getInstance().clearHouseList();
-                //娓呯┖璁惧缂撳瓨鏁版嵁
-                HdlDeviceLogic.getInstance().clearDeviceList();
-                //娓呯┖缂撳瓨鏁版嵁
-                if (mInfoMap != null) {
-                    mInfoMap.clear();
-                }
-                //鏂紑mqtt杩炴帴
-                if (MqttRecvClient.getInstance() != null) {
-                    MqttRecvClient.getInstance().disConnect();
-                }
-                //鏂紑鎵�鏈塼cp杩炴帴涓旀竻绌鸿繛鎺ョ紦瀛�
-                // TODO: 10/10/23
+                    //娓呯┖娑堟伅缂撳瓨鏁版嵁
+                    HdlMessageLogic.getInstance().clearListMessage();
+                    //娓呯┖鐢电珯缂撳瓨鏁版嵁
+                    HdlResidenceLogic.getInstance().clearHouseList();
+                    //娓呯┖璁惧缂撳瓨鏁版嵁
+                    HdlDeviceLogic.getInstance().clearDeviceList();
+                    //娓呯┖缂撳瓨鏁版嵁
+                    if (mInfoMap != null) {
+                        mInfoMap.clear();
+                    }
+                    //鏂紑mqtt杩炴帴
+                    if (MqttRecvClient.getInstance() != null) {
+                        MqttRecvClient.getInstance().disConnect();
+                    }
+                    //鏂紑鎵�鏈塼cp杩炴帴涓旀竻绌鸿繛鎺ョ紦瀛�
+                    // TODO: 10/10/23
 //                TcpSocketBoot.stopAllConnectLinkGateway();
-                if (null != HDLUniMPSDKManager.getInstance().getUniMP()) {
-                    HDLUniMPSDKManager.getInstance().getUniMP().closeUniMP();
+                    if (null != HDLUniMPSDKManager.getInstance().getUniMP()) {
+                        HDLUniMPSDKManager.getInstance().getUniMP().closeUniMP();
+                    }
+                    SystemClock.sleep(200);
+                    initDCUniMPSDK();
+                    Intent intent = new Intent(getInstance(), LoginActivity.class);
+                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+                    if (type == 1) {
+                        intent.putExtra("isJpush", true);
+                    }
+                    startActivity(intent);
                 }
-                SystemClock.sleep(200);
-                initDCUniMPSDK();
-                Intent intent = new Intent(getInstance(), LoginActivity.class);
-                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
-                if (type == 1) {
-                    intent.putExtra("isJpush", true);
-                }
-                startActivity(intent);
 
             }
         });
 
     }
+
+    public void test(Context context) {
+//        new Handler().postDelayed(() -> {
+//            // 1. 璁剧疆寤惰繜閲嶅惎
+//            Intent restartIntent = new Intent(context, StartActivity.class);
+//            restartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+//
+//            PendingIntent pendingIntent = PendingIntent.getActivity(
+//                    context, 0, restartIntent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_CANCEL_CURRENT
+//            );
+//
+//            AlarmManager am1 = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+//            am1.set(AlarmManager.RTC, System.currentTimeMillis() + 300, pendingIntent);
+//
+//            int myUid = android.os.Process.myUid();
+//            ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+//            String packageName = context.getPackageName();
+//
+//            for (ActivityManager.RunningAppProcessInfo proc : am.getRunningAppProcesses()) {
+//                if (proc.uid == myUid && proc.processName.startsWith(packageName)) {
+//                    if (proc.pid != android.os.Process.myPid()) {
+//                        try {
+//                            android.os.Process.killProcess(proc.pid);
+//                        } catch (Exception e) {
+//                            e.printStackTrace();
+//                        }
+//                    }
+//                }
+//            }
+//
+//            // 3. 閫�鍑哄綋鍓嶈繘绋�
+//            android.os.Process.killProcess(android.os.Process.myPid());
+//        }, 500);
+    }
+
 
     /**
      * 鍒濆鍖朥niMPSDK 灏忕▼搴廠DK
@@ -448,6 +505,7 @@
         }
     }
 
+
     /**
      * 閲嶅惎app
      */
@@ -463,6 +521,11 @@
         }
     }
 
+    /**
+     * 鍏虫帀app鎵�鏈夎繘绋�
+     *
+     * @param context 涓婁笅鏂�
+     */
     private void killAppProcess(Context context) {
 //        AppManagerUtils.getAppManager().finishAllActivity();
         try {
@@ -470,7 +533,7 @@
             List<android.app.ActivityManager.RunningAppProcessInfo> processInfos = manager.getRunningAppProcesses();
             // 鍏堟潃鎺夌浉鍏宠繘绋嬶紝鏈�鍚庡啀鏉�鎺変富杩涚▼
             for (android.app.ActivityManager.RunningAppProcessInfo runningAppProcessInfo : processInfos) {
-                if (runningAppProcessInfo.pid != android.os.Process.myPid()) {
+                if ((runningAppProcessInfo.uid == android.os.Process.myUid()) && (runningAppProcessInfo.pid != android.os.Process.myPid())) {
                     try {
                         android.os.Process.killProcess(runningAppProcessInfo.pid);
                     } catch (Exception e) {

--
Gitblit v1.8.0