Android组件化架构实践,android系统软件开发

本文探讨了Android组件化架构中的实践方案,包括模块间的通信(路由和事件总线)、自动注册(使用Transform API和ASM动态生成HashMap)、组件生命周期管理(模拟虚拟机工作流程)以及依赖和主包管理(通过gradle_component统一配置)。重点解决了在组件化过程中遇到的技术挑战,以提高可维护性和灵活性。
摘要由CSDN通过智能技术生成

为了避免循环依赖和业务逻辑之间的交叉,同一层的组件是不能直接相互引用的。
这是因为:
1)除了主Module,其他任何一个业务组件都可能是处于加载或者不加载的状态,比如有2个模块A和B,如果相互依赖,且假设没有加载B,而线上模块A使用了B中功能,那么A可能会crash;
2)任何一个业务组件都是独立的,也就是说可能是由不同的部门并行开发的,不应该互相依赖。
鉴于这两个规则,同一层之间是不能直接通信(如果只考虑第1点,不考虑独立依赖,可以使用反射,但是不够美观且会影响性能)。
这个通信包括两方面:
1)界面之间的相互跳转;
2)服务之间及业务之间的相互调用。同时组件如何注册、加载、卸载,这些都是组件化架构需要解决的。

实践方案

结合上述的理论基础,在实践过程中需要解决的技术难点主要有:模块间的通信、路由表的自动维护、组件的生命周期管理、主包管理及进程间通信等。

1. 通信

说到通信,我们能想到的方案有两种,路由和事件总线。路由可以解决界面的跳转和一些dialog、toast的显隐,但是不能解决服务之间的相互调用和回调。业界提出了类似于Android中四大组件之一ServiceManager的处理方法–“接口下沉”,也就是在基础组件层新建一个ServiceManager,并提供通用服务接口IService,在需要暴露服务的地方实现该接口并手动/自动注册到ServiceManager中,这样任何需要该服务的地方都可以通过࿱

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值