Android 组件化中使用动态创建的作用是解耦;
1. 反射机制
反射有两个作用:1.反编译:.class->.java;2.通过反射机制访问java对象中的属性,方法,构造器等;
实现反射,实际上是得到Class对象
![ac017b1ea48037b1a14a609fb90f2d4d.png](https://img-blog.csdnimg.cn/img_convert/ac017b1ea48037b1a14a609fb90f2d4d.png)
![c661bb1451298bc35d1639016b2f7b52.png](https://img-blog.csdnimg.cn/img_convert/c661bb1451298bc35d1639016b2f7b52.png)
2. 动态创建fragment
- 开发中经常会用到activity+多fragment的场景;
- 正常使用activity引用fragment方式时是强引用(import包名),在组件化项目中,如果fragment是组件module中的,
activity是主module或其他module的, 就会造成耦合严重,当需要移除时也很麻烦,那么如何降低耦合呢, 这就可以通过上面说的反射实现;
![4efe91a0ccc247eea3a52fa9e66191cc.png](https://img-blog.csdnimg.cn/img_convert/4efe91a0ccc247eea3a52fa9e66191cc.png)
使用反射会相对安全,也会降低耦合,但反射会造成一定的效率下降;
ARouter也提供了跨模块获取fragment对象的操作
![a5646c1d65e438771725a5eff720b9c4.png](https://img-blog.csdnimg.cn/img_convert/a5646c1d65e438771725a5eff720b9c4.png)
- 使用跨模块获取Fragment非日常适合在单Activity+多fragment的app架构中使用,因为fragment划分模块作为入口的设计,使用ARouter的方式非常适应模块间解耦的要求;
- 当业务模块选用fragment的形式作为业务入口时,需要充分考虑模块间业务跳转的解耦性,以保证业务分离后不会造成app崩溃
3. 动态配置Application
- 开发中我们经常会遇到某些功能模块中需要一些初始化的操作,只能强引用到主module的application中,这种情况如何更好的解耦呢?
![9cd7b3fb388d4ab4221124fd8fd149ab.png](https://img-blog.csdnimg.cn/img_convert/9cd7b3fb388d4ab4221124fd8fd149ab.png)
![e83481c069cf8f82b127dd3f9cb2b590.png](https://img-blog.csdnimg.cn/img_convert/e83481c069cf8f82b127dd3f9cb2b590.png)
![2809244c3ebfff5b92aab6267e2a364e.png](https://img-blog.csdnimg.cn/img_convert/2809244c3ebfff5b92aab6267e2a364e.png)
我是今阳,如果想要进阶和了解更多的干货,欢迎关注公众号”今阳说“接收我的最新文章
![33e9fa0396a3e55ddde6dad45cf5b4ec.png](https://img-blog.csdnimg.cn/img_convert/33e9fa0396a3e55ddde6dad45cf5b4ec.png)