hxb
2022-03-27 cc6023291bc94a229b53d7c2d83bf2b39bbfa9a0
HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java
@@ -4,6 +4,7 @@
import androidx.collection.ArrayMap;
import com.hdl.sdk.common.utils.LogUtils;
import com.hdl.sdk.common.utils.ThreadToolUtils;
import java.util.ArrayList;
@@ -27,17 +28,17 @@
    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() {
    }
    private static class SingletonInstance {
        private static final EventDispatcher INSTANCE = new EventDispatcher();
    }
//    private static class SingletonInstance {
        private static final EventDispatcher instance = new EventDispatcher();
//    }
    public static EventDispatcher getInstance() {
        return SingletonInstance.INSTANCE;
        return instance;
    }
    public synchronized void register(Object tag, EventListener listener) {
@@ -63,43 +64,51 @@
    }
    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) {
                        LogUtils.e("移除event异常1:"+ignored.getMessage());
                    }
                } catch (Exception ignored) {
                }
            }
        });
            });
        }catch (Exception e){
            LogUtils.e("移除event异常2:"+e.getMessage());
        }
    }
    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) {
                        LogUtils.e("移除event异常1:"+ignored.getMessage());
                    }
                } catch (Exception ignored) {
                }
            }
        });
            });
        }catch (Exception e){
            LogUtils.e("移除event异常2:"+e.getMessage());
        }
    }
@@ -150,20 +159,24 @@
     * @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);
        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) {
                        LogUtils.e("移除event异常1:" + ignored.getMessage());
                    }
                } catch (Exception ignored) {
                }
            }
        });
            });
        } catch (Exception e) {
            LogUtils.e("移除event异常2:" + e.getMessage());
        }
    }
    public synchronized void clear() {