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