《组件化架构》知识汇总

组件:指单一的功能组件,如视频组件(VideoSDK)、支付组件(PaySDK)、路由组件(Router),每个组件都能单独抽出来制作成SDK,也有的公司内部叫Lib组件

模块:指的是独立的业务模块,如直播模块(LiveModule)、首页模块(HomeModule)、即时通信模块(IMModule)等。模块相对于组件来说粒度更大,模块可能包含多种不同的组件。有的公司内部也叫UI组件

组件化的好处:

  1. 避免重复造轮子,节省开发和维护成本

  2. 通过组件和模块为业务基准合理安排人力,提高开发效率

  3. 不同的项目可以共用一个组件或者模块,确保整体技术方案的统一性

  4. 为未来插件化共用一套底层模型做准备

模块化的好处

  1. 业务模块解耦,业务一直更加简单

  2. 多团队或者团队内多人根据业务内容进行并行开发和测试

  3. 单个业务可以单独编译和打包,加快编译速度

  4. 多个APP共用模块,降低了研发和维护成本(eg:同程旅行,同程旅行极速版)

组件化是功能导向的,模块化是业务导向的

总结一句话:组件化是为了重用而拆分模块,模块化是为了业务分离而拆分模块

shareUid,拥有同一个uer id的多个APP可以配置成运行在同一个进程中,所以默认可以互相访问任意数据,比如prefs,且只有在主module里面声明shareUserId,才会最终打包到full文件夹西面的AndroidManifest中!

Application比Acitivity更先创建,重写refisterActicityLifeCycleCallbacks方法可以拿到栈顶的Activity,而且是全局的。



组件间通信方式

  1. LocalBroadcast(APP内部通信)

  2. EventBus(订阅者、发布者、订阅时间、事件总线)Publisher post(Event),Subscriber onEvent,EventBus3.0+用编译时注解替代了2.x的运行时注解,速度快效率高

  3. RxBus是一种响应式编程的模式,而非EventBus的观察者、监听者设计模式

组件间跳转

  1. 隐式启动Activity,通过sendintent.resolveActivity(getPackageManager!=null安全的跳转,设置exported=false确保其他APP无法跳转到我们的APP中

  2. Router

ARouter:

通过加载编译时注解创建的Group、Providers、Root三个类型的文件,使用WareHouse将文件保存到三个不同的HashMap对象中,而这个WareHouse就相当于路由表。

加载过程:

  1. 通过ARouter.navigation封装postcard对象

  2. tongguo 索引传递到路由中转站,询问是否存在跳转的对象

  3. 如果存在则设置绿色通道开关

  4. 判断是否绿色同行和是否能通过拦截服务

  5. 全部通过就会调用startActivity()

路由最大的好处:

组件间跳转

拦截过滤,登录状态验证等

具体的路由拦截:

路由跳转到需要申请权限的组件或者Activity,则可以实现IInterceptor接口,并重写process

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alex_ChuTT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值