目录
1.1.library_router定义组件生命周期最上层接口:
1.3.上层业务组件在module / assets目录下提供配置文件
1.5.library_router / ModuleRouter 扫描assets目录,加载配置文件:
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;
}