hxb
2022-04-12 17b81245f31d032d5eed69c190e42edb1949f46b
修复接听后闪退的问题
8个文件已修改
229 ■■■■■ 已修改文件
HDLSDK/com.hdl.sdk/build.gradle 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-common/build.gradle 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/HDLSdk.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-connect/build.gradle 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-socket/build.gradle 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/com.hdl.sdk/build.gradle
@@ -9,7 +9,7 @@
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        versionCode 2
        versionName "1.0.13"
        versionName "1.0.15"
    }
    buildTypes {
        debug {
HDLSDK/hdl-common/build.gradle
@@ -10,7 +10,7 @@
        targetSdkVersion rootProject.targetSdkVersion
        versionCode 2
        versionName "1.0.13"
        versionName "1.0.15"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles "consumer-rules.pro"
    }
HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/HDLSdk.java
@@ -19,7 +19,7 @@
        return version;
    }
    private String version="1.0.13";
    private String version="1.0.15";
    private HDLSdk() {
    }
HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java
@@ -30,116 +30,151 @@
    private static final ExecutorService ioThread = ThreadToolUtils.getInstance().newFixedThreadPool(3);
    private EventDispatcher() {
    }
//    private static class SingletonInstance {
        private static final EventDispatcher instance = new EventDispatcher();
    //    private static class SingletonInstance {
    private static final EventDispatcher instance = new EventDispatcher();
//    }
    public static EventDispatcher getInstance() {
        return instance;
    }
    public synchronized void register(Object tag, EventListener listener) {
        if (!EVENT.containsKey(tag)) {
            EVENT.put(tag, new ArrayList<>());
    public void register(Object tag, EventListener listener) {
        synchronized (this) {
            try {
                LogUtils.i("注册主题:" + tag);
                if (tag == null) return;
                if (!EVENT.containsKey(tag)) {
                    EVENT.put(tag, new ArrayList<>());
                }
                if (listener == null) {
                    LogUtils.i("监听事件为空");
                    return;
                }
                Objects.requireNonNull(EVENT.get(tag)).add(listener);
                TYPE.put(listener, MAIN_TYPE);
            } catch (Exception e) {
                LogUtils.e("register:" + e.getMessage());
            }
        }
        List<EventListener> events = EVENT.get(tag);
        if (events != null && !events.contains(listener)) {
            events.add(listener);
        }
        TYPE.put(listener, MAIN_TYPE);
    }
    public synchronized void registerIo(Object tag, EventListener listener) {
        if (!EVENT.containsKey(tag)) {
            EVENT.put(tag, new ArrayList<>());
    public  void registerIo(Object tag, EventListener listener) {
        synchronized (this) {
            LogUtils.i("注册主题:" + tag);
            if (tag == null) return;
            if (!EVENT.containsKey(tag)) {
                EVENT.put(tag, new ArrayList<>());
            }
            try {
                if (listener == null) {
                    LogUtils.i("监听事件为空");
                    return;
                }
                Objects.requireNonNull(EVENT.get(tag)).add(listener);
                TYPE.put(listener, IO_TYPE);
            } catch (Exception e) {
                LogUtils.e("registerIo:" + e.getMessage());
            }
        }
        List<EventListener> events = EVENT.get(tag);
        if (events != null && !events.contains(listener)) {
            events.add(listener);
        }
        TYPE.put(listener, IO_TYPE);
    }
    public synchronized void remove(Object tag) {
        try {
            ioThread.execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        if (EVENT.containsKey(tag)) {
                            List<EventListener> list = EVENT.get(tag);
                            for (EventListener eventListener : list) {
                                TYPE.remove(eventListener);
                            }
                            EVENT.remove(tag);
    public  void remove(Object tag) {
        synchronized (this) {
            if (tag == null) {
                return;
            }
            try {
                if (EVENT.containsKey(tag)) {
                    LogUtils.i("移除key:" + tag);
                    List<EventListener> list = EVENT.get(tag);
                    for (EventListener eventListener : list) {
                        if (eventListener == null) {
                            continue;
                        }
                    } catch (Exception ignored) {
                        LogUtils.e("移除event异常1:"+ignored.getMessage());
                        TYPE.remove(eventListener);
                    }
                    EVENT.remove(tag);
                }
            } catch (Exception ignored) {
                LogUtils.e("移除event异常1:" + ignored.getMessage());
            }
        }
    }
    public  void remove(Object tag, EventListener listener) {
        synchronized (this) {
            try {
                if (tag == null || listener == null) {
                    return;
                }
                if (EVENT.containsKey(tag)) {
                    LogUtils.i("移除key:" + tag);
                    List<EventListener> ev = EVENT.get(tag);
                    if (ev != null && !ev.isEmpty()) {
                        TYPE.remove(listener);
                        ev.remove(listener);
                    }
                }
            });
        }catch (Exception e){
            LogUtils.e("移除event异常2:"+e.getMessage());
            } catch (Exception ignored) {
                LogUtils.e("移除event异常1:" + ignored.getMessage());
            }
        }
    }
    public synchronized void remove(Object tag, EventListener listener) {
        try {
            ioThread.execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        if (EVENT.containsKey(tag)) {
                            List<EventListener> ev = EVENT.get(tag);
                            if (ev != null && !ev.isEmpty()) {
                                TYPE.remove(listener);
                                ev.remove(listener);
                            }
                        }
                    } catch (Exception ignored) {
                        LogUtils.e("移除event异常1:"+ignored.getMessage());
                    }
                }
            });
        }catch (Exception e){
            LogUtils.e("移除event异常2:"+e.getMessage());
        }
    }
    public synchronized void post(Object tag, @NonNull Object o) {
        if (EVENT.containsKey(tag)) {
            List<EventListener> list = EVENT.get(tag);
            if (list != null && !list.isEmpty()) {
                for (EventListener listener : list) {
        if (tag == null) {
            LogUtils.i("post tag为空");
            return;
        }
        try {
            if (EVENT.containsKey(tag)) {
                LogUtils.i("post:" + tag);
                List<EventListener> list = EVENT.get(tag);
                if (list != null && !list.isEmpty()) {
                    for (EventListener listener : list) {
                        if (listener == null) {
                            continue;
                        }
                        ThreadToolUtils.getInstance().runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                try {
                                    if (listener != null) {
                                        listener.onMessage(o);
                                    }
                                } catch (Exception e) {
                                    LogUtils.e("post异常1:" + e.getMessage());
                                }
                            }
                        });
                    }
                }
            }
            //所有主题的Listener通知
            if (ALL_TOPICS_EVENT != null && !ALL_TOPICS_EVENT.isEmpty()) {
                for (EventListener listener : ALL_TOPICS_EVENT) {
                    if (listener == null) {
                        continue;
                    }
                    ThreadToolUtils.getInstance().runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            if (listener != null) {
                                listener.onMessage(o);
                            try {
                                if (listener != null) {
                                    listener.onMessage(o);
                                }
                            } catch (Exception e) {
                            }
                        }
                    });
                }
            }
        }
        //所有主题的Listener通知
        if (ALL_TOPICS_EVENT != null && !ALL_TOPICS_EVENT.isEmpty()) {
            for (EventListener listener : ALL_TOPICS_EVENT) {
                ThreadToolUtils.getInstance().runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        if (listener != null) {
                            listener.onMessage(o);
                        }
                    }
                });
            }
        }catch (Exception e){
            LogUtils.e("post异常2:" + e.getMessage());
        }
    }
@@ -148,10 +183,17 @@
     * @param listener
     */
    public synchronized void registerAllTopicsListener(EventListener listener) {
        if (ALL_TOPICS_EVENT != null && !ALL_TOPICS_EVENT.contains(listener)) {
            ALL_TOPICS_EVENT.add(listener);
        if(listener==null){
            return;
        }
        TYPE.put(listener, MAIN_TYPE);
        try {
            if (ALL_TOPICS_EVENT != null && !ALL_TOPICS_EVENT.contains(listener)) {
                ALL_TOPICS_EVENT.add(listener);
            }
            TYPE.put(listener, MAIN_TYPE);
        }catch (Exception e){
            LogUtils.e("registerAllTopicsListener:" + e.getMessage());
        }
    }
    /**
@@ -164,6 +206,9 @@
                @Override
                public void run() {
                    try {
                        if(listener==null){
                            return;
                        }
                        if (ALL_TOPICS_EVENT != null && !ALL_TOPICS_EVENT.isEmpty()) {
                            TYPE.remove(listener);
                            ALL_TOPICS_EVENT.remove(listener);
@@ -189,6 +234,4 @@
        clear();
        ioThread.shutdownNow();
    }
}
HDLSDK/hdl-connect/build.gradle
@@ -9,7 +9,7 @@
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        versionCode 2
        versionName "1.0.13"
        versionName "1.0.15"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles "consumer-rules.pro"
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java
@@ -1,5 +1,6 @@
package com.hdl.sdk.connect;
import com.hdl.sdk.common.utils.LogUtils;
import com.hdl.sdk.common.utils.ThreadToolUtils;
import com.hdl.sdk.connect.bean.request.DeviceControlRequest;
import com.hdl.sdk.connect.callback.HDLLinkCallBack;
@@ -73,6 +74,7 @@
     * @param callBack 结果回调
     */
    public void startAuthenticateRequest(AuthenticateRequest request, HDLLinkCallBack callBack) {
        LogUtils.i("发送认证请求");
        HDLAuthSocket.getInstance().startAuthenticateRequest(request,callBack);
    }
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java
@@ -117,7 +117,7 @@
                udpSocketBoot.bind();
            }
        } catch (Exception e) {
//            return null;
              LogUtils.e("初始化Socket udp异常"+e.getMessage());
        }
        return udpSocketBoot;
@@ -136,9 +136,11 @@
        //2.构建监听Listener
//        authEvent =
        //3.监听网关广播的入网指令
        EventDispatcher.getInstance().remove(TopicConstant.GATEWAY_AUTH_BROADCAST);
        EventDispatcher.getInstance().register(TopicConstant.GATEWAY_AUTH_BROADCAST, new EventListener() {
            @Override
            public void onMessage(Object msg) {
                LogUtils.i("收到网关认证信息: ");
                NetworkAccessBroadcastResponse bean = getNetworkAccessBroadcastResponse(msg);
                if (bean != null) {
                    //移除监听
HDLSDK/hdl-socket/build.gradle
@@ -9,7 +9,7 @@
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        versionCode 2
        versionName "1.0.13"
        versionName "1.0.15"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles "consumer-rules.pro"