千锋教育-做有情怀、有良心、有品质的职业教育机构
千锋学习站|随时随地免费学
扫一扫进入千锋手机站
400-811-9990全国咨询热线
组件化是指解耦复杂系统时,将多个功能模板拆分、重组的过程。在Android工程表现上就是把app按照其业务的不同,划分为不同的Module。组件化架构的目的就是让每个业务模块变得相对独立,各个组件在组件模式下可以独立开发调试,集成模式下又可以集成到“app壳工程”中,从而得到一个具有完整功能的APP。
二、为什么要Android组件化
1、提高工程编译速度
进行组件化拆分后,每个业务或者功能都是一个单独的工程,这个单独的工程可以独立编译运行,拆分后的工程通常都比较小,代码量也比较少,我再也不用像以前编译一下得等待好几分钟了。
2、利于多人团队协作开发
业务组件之间不能相互引用,每个组件都把对应的业务功能收敛在一个工程里,彼此互不打扰。在多人团队里,每个人只负责自己的业务模块,他对业务功能的增删改查,都只限定在自己的这个业务模块里,不会影响其他人的业务,他代码质量的好坏也只会影响到自己的业务模块;对测试来说,也十分方便,大部分情况下,我们只需要着重测试修改过的业务组件即可,而不用老是进行全部回归测试。
3、组件化是功能重用的基石
业务组件类似一个个积木一样,我们可以用积木搭建出不同的房子,同理我们也可以创建多个不同的APP。我们只需要维护好每个组件,需要用到该组件的功能时,一建引用集成就可以了。
4、提高组件复用性
可能有些人会觉得,提高复用性很简单,直接把需要复用的代码做成AndroidModule,打包AAR并上传代码仓库,那么这部分功能就能被方便地引入和使用。但是我们觉得仅仅这样是不够的,上传仓库的AAR库是否方便被复用,需要组件化的规则来约束,这样才能提高复用的便捷性。
5、降低组件间的耦合
我们需要通过组件化的规则把代码拆分成不同的模块,模块要做到高内聚、低耦合。模块间也不能直接调用,这需要组件化通信框架的支持。降低了组件间的耦合性可以带来两点直接的好处:
三、Android组件化基础
1、组件之间的跳转
组件化中两个功能模块时不直接依赖的,其依赖规则是通过Basemodule间接依赖,当组件之间的Activity进行界面跳转时,由于没有相互依赖的关系,往往会无法引用另一个module中的Activity。
2、隐式跳转
隐式跳转是通过Android原生Intent匹配机制来实现相应跳转,就是使用Action来跳转到对应的Activity,这样使用隐式跳转的方式就可以跨module实现Activity之间的跳转了,注意一点,如果移出Activity所在的module而不移出相应的跳转,如果继续跳转会出现异常,使用隐式Intent跳转需要验证是否会接收该Intent,需要对该Intent对象调用resolveActivity()方法来判断至少有一个应用能够处理该Intent,通过隐式跳转的方式还可以设置exported为false来确保只有自己的App才能够启动对应的组件。
3、ARouter跳转
4、动态创建
延伸阅读1:组件化结构
上一篇
下一篇
一、为什么分布式数据库这么喜欢用kvstore虽然不论是单机数据库(MySQL、PostgreSQL等等),还是题主说到的分布式数据库(CockroachDB、TiDB)...详情>>
一、想开发一款直播交友APP需要的功能1、直播功能:用户可以选择视频一对一直播和语音一对一直播两种方式,观众需要支付直播费用,直播费用由...详情>>
一、物联网云平台的数据库1、关系型数据库(RDBMS)例如MySQL、PostgreSQL、Oracle等。关系型数据库以表格的形式存储数据,并使用SQL(Structur...详情>>
一、ACTION_CANCEL在这些时候会触发1、父view拦截事件首先要了解ViewGroup什么情况下会拦截事件,请看下面一段代码:@Overridepublicbooleand...详情>>
1、分布式表单iPhone目前主要的机型屏幕尺寸在4.7-5.8英寸,android的尺寸更多一些,但是总体上来说,移动端的载体手机屏幕不大,能承载的信息...详情>>
为什么说OceanBase4.0开启了国产数据库新的里程碑
为什么列存储数据库读取速度会比传统的行数据库快
Chromium是什么
为什么分布式数据库这么喜欢用kvstore
为什么参数化SQL查询可以防止SQL注入
endnote显示却无法初始化数据库怎么办
Endnote不能连接到在线数据库,怎么解决
网站间隙性502怎么解决
图数据库是什么
为什么MySQL中很少见到使用视图功能
2023-12-06
2023-12-09
2023-08-07
千锋教育运营主体:北京千锋互联科技有限公司,属具备计算机技术培训资质的教育培训机构。