From 7ae3378cab3a872f0f1bc8dfbc4dd9fad303d875 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期三, 08 十二月 2021 09:34:44 +0800
Subject: [PATCH] 修改下细节
---
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