18034727885
2026-08-14 ab732421b3d37097458adeca9a12f2df6a15b30a
rxnetty/src/main/java/cn/sinata/rxnetty/CoreService.java
@@ -11,6 +11,7 @@
import android.graphics.Color;
import android.os.Build;
import android.os.IBinder;
import android.util.Log;
import androidx.annotation.Nullable;
import androidx.core.app.NotificationCompat;
@@ -28,6 +29,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;
@@ -116,6 +118,11 @@
        init();
        NetStateReceiver.registerNetworkStateReceiver(this);
        // 服务重复启动时先移除旧观察者,避免重复重连回调 由AI生成
        if (mNetChangeObserver != null) {
            // 从网络监听器移除旧观察者实例 由AI生成
            NetStateReceiver.removeRegisterObserver(mNetChangeObserver);
        }
        mNetChangeObserver = new NetChangeObserver() {
            @Override
            public void onNetConnected(NetUtils.NetType type) {
@@ -184,6 +191,8 @@
    public void onDestroy() {
        super.onDestroy();
        isDestroy = true;
        // 服务销毁时移除网络观察者,避免静态列表持有 Service 引用 由AI生成
        NetStateReceiver.removeRegisterObserver(mNetChangeObserver);
        NetStateReceiver.unRegisterNetworkStateReceiver(this);
        if (subscriber != null && !subscriber.isUnsubscribed()) {
            subscriber.unsubscribe();
@@ -284,16 +293,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;
                        }
                        Log.i("CoreService", "sendHeart_websocket长连接断开,重新连接");
                        connectServer();
                    }
                }, Throwable::printStackTrace);
    }