法:生命周期创建、生命周期停止以及生命周期的优先级设置。
public abstract class BizLifeCycle { private Application app;
在每个组件中只要实现上述模型即可。
有了生命周期模型,我们还需要一个管理器,用于管理这些组件的生命周期模型,在这个管理器中,我们同样需要实现三个基础方法:生命周期模型的注册,生命周期模型的反注册以及执行已存在的生命周期模型。
public class BizLifeCycleManager { private static ArrayList<BizLifeCycle> sPinLifeCycleList;
调用示例如下,直接在壳工程的Application中使用,因为生命周期模型中都设置有优先级,所以在设置了优先级的情况下,可以不必在意register的顺序。如此一来,将生命周期注册后,需要更改每个组件件的一些初始化工作,可以直接在组件的生命周期中修改,而不需要变更壳工程的Application。
override fun onCreate() { super.onCreate() BizLifeCycleManager.register(CommonBizLifeCycle(this)) BizLifeCycleManager.register(HttpBizLifeCycle(this)) BizLifeCycleManager.register(RouterBizLifeCycle(this)) BizLifeCycleManager.register(ThirdBizLifeCycle(this)) BizLifeCycleManager.execute() }
6. 模块在调试与发布模式之间的切换
项目开发时,一般提供调试环境与正式发布环境。在不同的环境中,app的有些功能是不需要用到的,或者是有所不同的。另外,在模块化开发时,有些业务模块在调试时,可以作为单独的app运行调试,不必每次都编译所有的模块,极大的加快编译速度,节省时间成本。基于,以上种种原因,我们就必须对项目的调试与正式环境做不同的部署配置,然而如果全靠每次手动修改,当模块量达到数十时,则会非常麻烦,且容易出错。所以我们需要尽可能的用代码做好配置。
首先,来看如何配置module在app与library之间的切换,实现module在调试时作为app单独运行调试。看示例代码,这也是比较常见的方式:
在gradle.properties中,配置字段isAuthModule,控制auth模块是作为一个模块还是一个app
在auth模块的build.gradle文件中作如下配置: