.三、思考基于上述的2个痛点,对原有方案重新进行了思考.使用动态代理,在代理中维护监听列表,在代理内部处理循环分发,减少代码冗余.用map缓存回调事件的参数,添加事件回调时可以选择注册粘性事件回调,从缓存中取到最新的参数触发事件回调...方法中分发事件,并且定义一个事件监听泛型,用于规范事件监听类型,在构造函数中接收事件监听的class对象,用于后续创建代理对象.class ModuleListenerProxy<Listener :...getProxy()获取到代理对象,回调事件.由于getProxy()方法可能会在模块中被多次调用,为减少代码冗余,getProxy()中创建创建代理对象proxy所需的clazz在初始化时赋值./**...方法在模块生命周期结束的时候可以释放资源,防止内存泄露./** * 释放 */fun release() { listeners.clear() proxy = null}2、添加粘性事件监听需要在原来的...,缓存时以方法的唯一标识符为key,在添加事件监听时设置是否接收粘性消息,接收粘性消息则通过反射取出事件监听中的所有事件回调方法,找到对应的参数,触发一次事件回调./** * 事件监听数据缓存 */private