文笔比当年提升了一些,后面再做一次总结
组件间通信思路:本质都需要经过一个公共模块进行通信(类似不同用户空间通过内核通信)
A模块要调用B模块方法:
- 提取B模块接口,被A模块依赖。
- B模块实现接口逻辑,B模块启动的时候将自身注入底层模块,底层模块保存
<Key, IProvider>
,Key一般时Class名称或者自定义Name - A模块根据Key找到IProvider,强转为B模块的接口,调用接口方法
另外可以定义通用消息,定义sendMessage或者sendEvent,接收方提供一个入口负责接收,解析Message或Event执行不同的逻辑
ARouter使用编译时注解
EventBus原理也是类似的,只不过Key是参数类型,存储的是方法信息,通过反射执行方法。使用运行时注解