| | |
| | | package com.hdl.sdk.common.event;
|
| | |
|
| | | import androidx.annotation.NonNull;
|
| | | import androidx.collection.ArrayMap;
|
| | |
|
| | | import android.util.ArrayMap;
|
| | |
|
| | | import com.hdl.sdk.common.utils.LogUtils;
|
| | | import com.hdl.sdk.common.utils.ThreadToolUtils;
|
| | |
| | | import java.util.ArrayList;
|
| | | import java.util.List;
|
| | | import java.util.Objects;
|
| | | import java.util.concurrent.ConcurrentHashMap;
|
| | | import java.util.concurrent.ExecutorService;
|
| | |
|
| | |
|
| | |
| | |
|
| | | private static final List<EventListener> ALL_TOPICS_EVENT = new ArrayList<>();//所有主题消息
|
| | |
|
| | | private static final ArrayMap<Object, List<EventListener>> EVENT = new ArrayMap<>();
|
| | | private static final ConcurrentHashMap<Object, List<EventListener>> EVENT = new ConcurrentHashMap<>();
|
| | |
|
| | | private static final ArrayMap<EventListener, Integer> TYPE = new ArrayMap<>();
|
| | | private static final ConcurrentHashMap<EventListener, Integer> TYPE = new ConcurrentHashMap<>();
|
| | |
|
| | | private static final int MAIN_TYPE = 0;
|
| | | private static final int IO_TYPE = 1;
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | public void registerIo(Object tag, EventListener listener) {
|
| | | public void registerIo(Object tag, EventListener listener) {
|
| | | synchronized (this) {
|
| | | LogUtils.i("注册主题:" + tag);
|
| | | if (tag == null) return;
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | public void remove(Object tag) {
|
| | | public void remove(Object tag) {
|
| | | synchronized (this) {
|
| | | if (tag == null) {
|
| | | return;
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | public void remove(Object tag, EventListener listener) {
|
| | | public void remove(Object tag, EventListener listener) {
|
| | | synchronized (this) {
|
| | | try {
|
| | | if (tag == null || listener == null) {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | public synchronized void post(Object tag, @NonNull Object o) {
|
| | | public synchronized void post(Object tag, Object o) {
|
| | | if (tag == null) {
|
| | | LogUtils.i("post tag为空");
|
| | | return;
|
| | |
| | | listener.onMessage(o);
|
| | | }
|
| | | } catch (Exception e) {
|
| | | LogUtils.e("post异常1:" + e.getMessage());
|
| | | // LogUtils.e("post异常1:" + e.getMessage());
|
| | | }
|
| | | }
|
| | | });
|
| | |
| | | });
|
| | | }
|
| | | }
|
| | | }catch (Exception e){
|
| | | } catch (Exception e) {
|
| | | LogUtils.e("post异常2:" + e.getMessage());
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 注册所有主题消息的监听
|
| | | *
|
| | | * @param listener
|
| | | */
|
| | | public synchronized void registerAllTopicsListener(EventListener listener) {
|
| | | if(listener==null){
|
| | | if (listener == null) {
|
| | | return;
|
| | | }
|
| | | try {
|
| | |
| | | ALL_TOPICS_EVENT.add(listener);
|
| | | }
|
| | | TYPE.put(listener, MAIN_TYPE);
|
| | | }catch (Exception e){
|
| | | } catch (Exception e) {
|
| | | LogUtils.e("registerAllTopicsListener:" + e.getMessage());
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 取消所有主题消息的监听
|
| | | *
|
| | | * @param listener
|
| | | */
|
| | | public synchronized void removeAllTopicsListener(EventListener listener) {
|
| | |
| | | @Override
|
| | | public void run() {
|
| | | try {
|
| | | if(listener==null){
|
| | | if (listener == null) {
|
| | | return;
|
| | | }
|
| | | if (ALL_TOPICS_EVENT != null && !ALL_TOPICS_EVENT.isEmpty()) {
|