# modulepro111 **Repository Path**: android100/modulepro111 ## Basic Information - **Project Name**: modulepro111 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-05-11 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![](imgs/组件化项目架构.png) ![](imgs/组件化通信.png) ![](imgs/组件化问题.png) ![](imgs/组件化问题2.png) 要实现组件化,不论采用什么样的技术路径,需要考虑的问题主要包括下面几个: 代码解耦。如何将一个庞大的工程拆分成有机的整体? 组件单独运行。上面也讲到了,每个组件都是一个完整的整体,如何让其单独运行和调试呢? 代码解耦主要是从两个方面, 其一是公共代码的抽取和归纳, 其二是面向接口编程,接口下沉。 数据传递。因为每个组件都会给其他组件提供的服务,那么主项目(Host)与组件、组件与组件之间如何传递数据? bus主要解决的是组件之间通信的问题,替代广播等原生方案,bus有很多中,eventbus,rxbus, livedataBus等 UI 跳转。UI 跳转可以认为是一种特殊的数据传递,在实现思路上有啥不同? 组件的生命周期。我们的目标是可以做到对组件可以按需、动态的使用,因此就会涉及到组件加载、卸载和降维的生命周期。 集成调试。在开发阶段如何做到按需的编译组件?一次调试中可能只有一两个组件参与集成,这样编译的时间就会大大降低,提高开发效率。 代码隔离。组件之间的交互如果还是直接引用的话,那么组件之间根本没有做到解耦,如何从根本上避免组件之间的直接引用呢?也就是如何从根本上杜绝耦合的产生呢?只有做到这一点才是彻底的组件化。 # ARouter IProvider [组件化爬坑---组件间解耦之ARouter获取Service](https://blog.csdn.net/RunningXiaoHei/article/details/81913824) [alibaba-ARouter(2)—ARouter IProvider 跨moudle的服务调用](https://blog.csdn.net/user11223344abc/article/details/79913830)