当项目做了组件化之后,每个module都是可以独立作为application,那么怎么跳转到别的module页面呢?是否需要关心别人的页面叫什么呢?是否需要因为别人的页面改动而影响呢?
答案是NO。
那么我接下来要说的方案是deeplink,也就是Android提供的scheme跳转。
为什么要选择deeplink
http://example.com/deepLink/{id}/{name}
比如这种形式根据两边定好的协议,能直接跳转、获取参数,而不需要关心对方的页面,就算页面改了类名、包名,只要scheme配置没改,那么都不需要担心。
做到了解耦的特性。解耦也是组件化的最关键的一步。
用什么方式去实现deeplink
自己维护一个navigator
全局维护一个navigator,每次有需要跳转的页面,就register进去。
使用注解方式
使用annotation,在每个界面上方注册deeplink的参数和规范。
使用apt,生成每个module(根据module包名)自己的分发deeplink的类。
airbnb的deeplinkDispatch就做的很好 deeplinkDispatch
。。突然没心情写源码解析了。以后有空再补上。