From 97692c01e5103eada2ffa5da0c529b0e375a46a4 Mon Sep 17 00:00:00 2001
From: 18034727885 <973609879@qq.com>
Date: 星期五, 14 八月 2026 16:57:27 +0800
Subject: [PATCH] 修复问题

---
 rxnetty/src/main/java/cn/sinata/rxnetty/CoreService.java |   32 ++++++++++++++++++++++----------
 1 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/rxnetty/src/main/java/cn/sinata/rxnetty/CoreService.java b/rxnetty/src/main/java/cn/sinata/rxnetty/CoreService.java
index b756734..7b954b4 100644
--- a/rxnetty/src/main/java/cn/sinata/rxnetty/CoreService.java
+++ b/rxnetty/src/main/java/cn/sinata/rxnetty/CoreService.java
@@ -28,6 +28,7 @@
 import io.reactivex.netty.channel.ObservableConnection;
 import rx.Observable;
 import rx.Subscriber;
+import rx.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
 import rx.functions.Func1;
 import rx.schedulers.Schedulers;
@@ -130,6 +131,11 @@
         init();
 
         NetStateReceiver.registerNetworkStateReceiver(this);
+        // 服务重复启动时先移除旧观察者,避免重复重连回调 由AI生成
+        if (mNetChangeObserver != null) {
+            // 从网络监听器移除旧观察者实例 由AI生成
+            NetStateReceiver.removeRegisterObserver(mNetChangeObserver);
+        }
         mNetChangeObserver = new NetChangeObserver() {
             @Override
             public void onNetConnected(NetUtils.NetType type) {
@@ -196,6 +202,8 @@
     public void onDestroy() {
         super.onDestroy();
         isDestroy = true;
+        // 服务销毁时移除网络观察者,避免静态列表持有 Service 引用 由AI生成
+        NetStateReceiver.removeRegisterObserver(mNetChangeObserver);
         if (wakeLockUtils!=null)
             wakeLockUtils.releaseWakeLock();
         NetStateReceiver.unRegisterNetworkStateReceiver(this);
@@ -304,16 +312,20 @@
             return;
         }
         //reconnect
-        Observable.timer(3, TimeUnit.SECONDS).subscribe(new Action1<Long>() {
-            @Override
-            public void call(Long aLong) {
-                if (mConnection != null) {
-                    mConnection.close();
-                    mConnection = null;
-                }
-                connectServer();
-            }
-        });
+        Observable.timer(3, TimeUnit.SECONDS)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new Action1<Long>() {
+                    @Override
+                    public void call(Long aLong) {
+                        if (mConnection != null) {
+                            mConnection.close();
+                            mConnection = null;
+                        }
+                        Logger.i("CoreService", "sendHeart_websocket长连接断开,重新连接");
+                        connectServer();
+                    }
+                }, Throwable::printStackTrace);
 
     }
 

--
Gitblit v1.7.1