document
- 组件化
- 组件化需要解决两个问题,业务模块的划分以及组件间的通信。业务模块的划分是比较麻烦的,因为之前写的都耦合在了一起,目前我们也只有一个发票的模块独立拆分了出来。组件间的通信可以采用 ARouter。ARouter 的源码我倒是没有看过,不过之前也写过路由跳转,核心的**就是生成一个 Map,Path 对 Activity 的映射。实现方式有两种,第一种是通过元数据的形式,即在 Manifest 注册 Activity 时添加 meta-data 信息,然后在 Application 的 onCreate 时去扫描所有的 Activity 生成 Map,这种方式实现简单,几十行代码就能写完了。第二种方式则是比较传统的通过编译时注解 + JavaPoet 的形式,和 ButterKnife 原理一样。但是写的时候还是发现一些问题的,注解处理器在每个模块下都要引入,生成的类的全限定名是当前的包名 + 类名,里面就一个 public static 的方法,方法里面就是写好的 HashMap 一系列的 put 方法,接下来就是要每个模块生成的 Map 进行合成即可,但是问题来了,在 app 模块是不知道其他模块的名字呀,于是只能在 assets 目录下配一个 json 文件用来读取每个模块的模块名,有了模块名就有了前面生成的类的全限定名了,然后反射执行方法合成 Map 即可。
- Android组件化,全面掌握!
- Android 进阶篇---> App运行时大图监控
- JVM基础 -- 字节码
- 今日头条屏幕适配方案终极版正式发布!
- Shield——开源的移动端页面模块化开发框架
- Android开发高手课