| | |
| | | import androidx.collection.ArrayMap;
|
| | |
|
| | |
|
| | | import com.hdl.sdk.common.utils.LogUtils;
|
| | | import com.hdl.sdk.common.utils.ThreadToolUtils;
|
| | |
|
| | | import java.util.ArrayList;
|
| | |
| | | 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) {
|
| | |
| | | }
|
| | |
|
| | | 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());
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | |
| | | * @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() {
|