From 1323c0b3463c5486be9d5e5310782aeb9023697c Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期一, 15 十一月 2021 11:31:56 +0800
Subject: [PATCH] 2021-11-15 1.更新

---
 HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 49 insertions(+), 0 deletions(-)

diff --git a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java
index b17b3a8..d1b24ec 100644
--- a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java
+++ b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java
@@ -18,6 +18,8 @@
  */
 public class EventDispatcher {
 
+    private static final List<EventListener> ALL_TOPICS_EVENT = new ArrayList<>();//鎵�鏈変富棰樻秷鎭�
+
     private static final ArrayMap<Object, List<EventListener>> EVENT = new ArrayMap<>();
 
     private static final ArrayMap<EventListener, Integer> TYPE = new ArrayMap<>();
@@ -100,6 +102,7 @@
         });
     }
 
+
     public synchronized void post(Object tag, @NonNull Object o) {
         if (EVENT.containsKey(tag)) {
             List<EventListener> list = EVENT.get(tag);
@@ -116,9 +119,55 @@
                 }
             }
         }
+        //鎵�鏈変富棰樼殑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);
+                        }
+                    }
+                });
+            }
+        }
+    }
+
+    /**
+     * 娉ㄥ唽鎵�鏈変富棰樻秷鎭殑鐩戝惉
+     * @param listener
+     */
+    public synchronized void registerAllTopicsListener(EventListener listener) {
+        if (ALL_TOPICS_EVENT != null && !ALL_TOPICS_EVENT.contains(listener)) {
+            ALL_TOPICS_EVENT.add(listener);
+        }
+        TYPE.put(listener, MAIN_TYPE);
+    }
+
+    /**
+     * 鍙栨秷鎵�鏈変富棰樻秷鎭殑鐩戝惉
+     * @param listener
+     */
+    public synchronized void removeAllTopicsListener(EventListener listener) {
+        ioThread.execute(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    if (ALL_TOPICS_EVENT != null && !ALL_TOPICS_EVENT.isEmpty()) {
+                        TYPE.remove(listener);
+                        ALL_TOPICS_EVENT.remove(listener);
+                    }
+                } catch (Exception ignored) {
+
+                }
+
+            }
+        });
     }
 
     public synchronized void clear() {
+        ALL_TOPICS_EVENT.clear();
         EVENT.clear();
         TYPE.clear();
     }

--
Gitblit v1.8.0