Android组件化二【跨Module调用方法】
经过前一篇的文章,我们已经可以将Module单独运行了,这一篇的话,我们继续探索下组件化(其实是模块化)的内容。
我们这次使用的是AppJoint的组件化方案,仍旧使用上篇文章的代码来做演示。
Appjoint的详细说明文档在 回归初心:极简 Android 组件化方案 — AppJoint !
一、目标
这次我们的目标是在app模块的MainActivity中启动food模块的FoodActivity,然后在food模块的FoodActivity中启动movie模块中的MovieActivity。其实但是启动Activity的话我们可以直接采取Arouter的路由方案来进行,但是这里的话我们不使用Arouter,而是使用AppJoint提供的方法来演示。
二、准备工作
在food模块中创建FoodActivity,在movie模块中创建MovieActivity,app模块中有默认的MainActivity。创建好必备的Activity后我们就需要准备跨模块来启动Activity了。
三、方案
其实当两个模块之间想要通讯的话,我们一般需要暴漏出来一个接口,然后给另一个模块调用,然而这样的话可能就会发生一个模块依赖另一个模块的问题了,所以我们需要将这个接口单独暴漏出来,这时有两种方案:
添加一个基础路由模块例如叫router,统一声明所有对外暴漏的接口。所有需要实现或者调用其他模块的都要依赖该router模块。
每个需要对外暴漏方法的模块添加一个专门对外暴漏接口的模块。例如movie模块想暴露出来一个方法,那么添加一个movieApi模块,该模块只声明对外暴漏的接口,