From 0188dee359636723190f0f67a6b674b7b08f7bef Mon Sep 17 00:00:00 2001 From: hxb <hxb@hdlchina.com.cn> Date: 星期一, 21 三月 2022 09:55:01 +0800 Subject: [PATCH] 增加判断json数据格式 --- HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java | 110 +++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 83 insertions(+), 27 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..9316f07 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<>(); @@ -25,7 +27,7 @@ private static final int MAIN_TYPE = 0; private static final int IO_TYPE = 1; - private static final ExecutorService ioThread = ThreadToolUtils.getInstance().newFixedThreadPool(2); + private static final ExecutorService ioThread = ThreadToolUtils.getInstance().newFixedThreadPool(3); private EventDispatcher() { } @@ -61,44 +63,50 @@ } public synchronized void remove(Object tag) { - 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); + 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); } - EVENT.remove(tag); + } catch (Exception ignored) { + } - } catch (Exception ignored) { } - - } - }); + }); + }catch (Exception e){} } public synchronized void remove(Object tag, EventListener listener) { - 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); + 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) { + } - } catch (Exception ignored) { } - - } - }); + }); + }catch (Exception e){} } + public synchronized void post(Object tag, @NonNull Object o) { if (EVENT.containsKey(tag)) { @@ -116,9 +124,57 @@ } } } + //鎵�鏈変富棰樼殑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) { + try { + 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) { + + } + + } + }); + }catch (Exception e){} } public synchronized void clear() { + ALL_TOPICS_EVENT.clear(); EVENT.clear(); TYPE.clear(); } -- Gitblit v1.8.0