| | |
| | | */
|
| | | 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<>();
|
| | |
| | | });
|
| | | }
|
| | |
|
| | |
|
| | | public synchronized void post(Object tag, @NonNull Object o) {
|
| | | if (EVENT.containsKey(tag)) {
|
| | | List<EventListener> list = EVENT.get(tag);
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | //所有主题的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();
|
| | | }
|