自动进样
Android通用的组件自动注册,自动初始化解决方案
背景问题
我们在组件化的过程,业务被分割成独立的Module中,一些公共组件会在各个Module中通过APT生成一些需要被注册至组件中的信息类,诸如EventBus生成的Index类。我们这边RN定制的插件是跟随各自的模块,需要被注册。还有,各个模块对外提供的api接口的话,也需要被注册。
另外,有些组件为某些Module特有,需要在App启动的时候就要初始化,有些需要在主线程中初始化,有些为不相邻的主线程可以在非主线程中初始化。
在组件化之前,我们是在主模块通过硬编码来进行注册,在应用程序中堆叠各个组件的初始化逻辑。
有没有更好的解决方式?
解决思路
首先,将问题分解摘要:
把注册行为进行抽象化,可以把一个类(需要被注册的信息)选择方法函数的入参,那方法函数就可以可以是对注册相关逻辑的实现。那注册问题可以进一步转化为各模块如何把相关类(需要被注册的信息)转换为方法函数的入参,组件定义方法函数,获取入参来实现注册逻辑。
A a = new A()
B b = new B()
b.shoot(a.get())
1