Android工程架构设计:组件化三(组件间通讯机制)

本文介绍了Android应用的组件化架构设计,重点讨论了组件间的通讯和生命周期管理。组件间的通讯基于ARouter进行了封装,支持Activity跳转、参数传递和Fragment获取等。同时,文章阐述了如何通过组件路由管理生命周期,包括定义组件生命周期接口、配置文件、加载机制以及在BaseApplication中的初始化。此外,还提到了路由拦截器的实现,例如登录拦截,以确保特定功能的访问权限。
摘要由CSDN通过智能技术生成

目录

一,组件路由(针对业务组件生命周期管理)

1.1.library_router定义组件生命周期最上层接口:

1.2.上层业务层组件根据自身实际情况提供接口实现类:

1.3.上层业务组件在module / assets目录下提供配置文件

1.4.library_router定义组件信息描述:

1.5.library_router / ModuleRouter 扫描assets目录,加载配置文件:

1.6.BaseApplication初始化加载:

1.7.生命周期调用:

二,通讯路由(针对业务组件数据通讯)

2.1.定义全局路由配置信息:

2.2.服务提供类添加注解:

2.3.组件间通讯(获取Fragment为例):

三,定义路由拦截器(以登录拦截为例)

 

App在划分组件时,为了达到充分解耦和复用,横向业务组件间严格禁止直接依赖,组件间消息通讯,数据传递以路由器(或者事件总线)的方式实现。

本框架以阿里ARouter为基础,设计实现对组件路由以及通讯路由。

一,组件路由(针对业务组件生命周期管理)

声明:该部分实现方式借鉴论坛某位老师的文章,但由于当初急于实现功能,并未及时做记录,现在做总结时已经找不到原文章链接,在此对老师表示感谢,并为无法附上转载链接而特别表示歉意!

业务组件有不同的生命周期,不同的生命周期阶段,会执行相应的业务逻辑,例如:数据预加载,资源释放等等。

组件化架构需要对各个业务组件的生命周期做全局性管理,可与Application生命周期做绑定,也可自由设置生命周期规则。

这个事情由组件library_router来做。

1.1.library_router定义组件生命周期最上层接口:

public interface IModuleLifeCycle {
    void onCreate();
    void enterBackground();
    void enterForeground();
    void onTerminate();
    void onConfigurationChanged(Configuration var1);
    void onLowMemory();
    void onTrimMemory(int level);
}

onLowMemory  onTrimMemory区别:https://www.jianshu.com/p/a5712bdb2dfd

1.2.上层业务层组件根据自身实际情况提供接口实现类:

public class LoginModuleLifeCycle implements IModuleLifeCycle {
    @Override
    public void onCreate() {}
    @Override
    public void enterBackground() {}
    @Override
    public void enterForeground() {}
    @Override
    public void onTerminate() {}
    @Override
    public void onConfigurationChanged(Configuration var1) {}
    @Override
    public void onLowMemory() {}
    @Override
    public void onTrimMemory(int level) {
    }
}

这里可以做数据预加载,预配置,资源回收释放等操作。

1.3.上层业务组件在module / assets目录下提供配置文件

文件类型:json文件;命名规则:以"APP_Module_"开头;

配置信息:组件名,包名,生命周期类名。

如:APP_Module_Login.xml

{
  "moduleName": "module_login",
  "packageName": "demo.module_login",
  "delegateName": "demo.module_login.LoginModuleLifeCycle"
}

1.4.library_router定义组件信息描述:

public class ModuleInfo {
    public String moduleName;
    public String packageName;
    public String delegateName;
}

1.5ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值