lmw
2023-06-21 bd6a8872438a35d47821c5d5da7fe149e5fed3ab
rxnetty/src/main/java/cn/sinata/rxnetty/CoreService.java
@@ -5,8 +5,12 @@
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.text.format.DateFormat;
import android.text.format.DateUtils;
import android.util.Log;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.core.app.NotificationCompat;
@@ -14,6 +18,8 @@
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;
import cn.sinata.rxnetty.Cache.CacheUtil;
import cn.sinata.rxnetty.netStatus.NetChangeObserver;
import cn.sinata.rxnetty.netStatus.NetStateReceiver;
import cn.sinata.rxnetty.netStatus.NetUtils;
@@ -73,6 +79,7 @@
            }
        });
        initCheckOb();
        initCheckObNUll();
    }
    public void checkState() {
@@ -80,14 +87,35 @@
                || !mConnection.getChannel().isActive()
                || !mConnection.getChannel().isWritable()) {
            reConnect();
        }else {
//            String s = CacheUtil.get().getAsString("reConnect");
//            s = s + "###"+ "已连接";
//            CacheUtil.get().put("reConnect",s);
        }
    }
    public void checkStateNull(){
//        String s = CacheUtil.get().getAsString("reConnect");
//        s = s + "###"+ "checkStateNull";
//        CacheUtil.get().put("reConnect",s);
        reConnect();
    }
    void initCheckOb() {
        NettyClient.getInstance().setOnCheckListener(new OnCheckListener() {
            @Override
            public void doCheck() {
                checkState();
            }
        });
    }
    void initCheckObNUll(){
        NettyClient.getInstance().setOnCheckNullListener(new OnCheckListenerNull() {
            @Override
            public void doCheck() {
                checkStateNull();
            }
        });
    }
@@ -248,19 +276,35 @@
    private void reConnect() {
        if (isDestroy) {
//            String s = CacheUtil.get().getAsString("reConnect");
//            s = s + "###"+ "server已死";
//            CacheUtil.get().put("reConnect",s);
            return;
        }
        //reconnect
//        String s = CacheUtil.get().getAsString("reConnect");
//        s = s + "###"+ "倒计时3秒";
//        CacheUtil.get().put("reConnect",s);
        Observable.timer(3, TimeUnit.SECONDS).subscribe(new Action1<Long>() {
            @Override
            public void call(Long aLong) {
//                String s = CacheUtil.get().getAsString("reConnect");
//                s = s + "###"+ "倒计时结束";
//                CacheUtil.get().put("reConnect",s);
                if (mConnection != null) {
                    mConnection.close();
                    mConnection = null;
                }
                Log.i("CoreService", "sendHeart_websocket长连接断开,重新连接");
                connectServer();
            }
            @Override
            protected void finalize() throws Throwable {
                super.finalize();
            }
        });
    }