[Android]如何做一个崩溃率少于千分之三噶应用app(28)- 跨module操作能力

大家好,我系苍王。


以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。

[Android]如何做一个崩溃率少于千分之三噶应用app--章节列表


这几个月一直在编写一本叫做《Android组件化架构》的书籍,所以之前的写作时间都用来编写此书了。现在终于到达编辑阶段,请有兴趣的同学耐心等待一下。

有关注我的同学,应该有看过我之前写的组件化路由跳转,介绍了ARouter和ActivityRouter。

之前有组件化章节中介绍过动态创建,说到的反射的形式来初始化Fragment。

这里结合起来,ARouter提供了可以跨module获取Fragment的能力。

使用ARouter注册一个Fragment


编译时注解注册为RouteType为Fragment



然后通过路由导航获取到Fragment

[Android]如何做一个崩溃率少于千分之三噶应用app(28)- 跨module操作能力_第1张图片

其底层也是提供了反射方案来完成,具体可以看_ARouter.java 的_navigation方法

[Android]如何做一个崩溃率少于千分之三噶应用app(28)- 跨module操作能力_第2张图片

ARouter已经封装好反射的方法,可以简单调用就可以了。

使用场景:如果模块是单Activity+多Fragments的架构,Fragment作为每个module的入口,那就可以使用此路由方式来启动。


连Fragment也能获取到了,那么如果想将Fragment的初始化方法也封装到module当中,就需要拥有跨module调用方法的能力。

这里需要继承ARouter的IProvider接口

[Android]如何做一个崩溃率少于千分之三噶应用app(28)- 跨module操作能力_第3张图片

编译时注解会注册RouteType.PROVIDER


使用navigation获取IProvider对象就能直接调用方法了



然后通过获取到Provider的PostCard对象

[Android]如何做一个崩溃率少于千分之三噶应用app(28)- 跨module操作能力_第4张图片

在LogisticsCenter中的completion方法

[Android]如何做一个崩溃率少于千分之三噶应用app(28)- 跨module操作能力_第5张图片

先获取缓存中是否有此IProvider对象,没有就会反射创建,然后设置到Postcard的provider对象中

最终PostCard中取出IProvider的实体对象,并返回到navigation调用

[Android]如何做一个崩溃率少于千分之三噶应用app(28)- 跨module操作能力_第6张图片

其实底层还是通过反射类路径名来完成方法的反射调用。

使用场景:非常适合模块中需要封装一些初始化接口,给外部调用模块调用。例如单例对象封装,某些业务模块中的弹框(登录支付弹框)能很好的解绑到对应的业务模块当中,不需要移到base公用层使用。


如果需要传递参数可以使用直接方法传参,也可以使用Autowired的依赖注入方式。

其原理是传递参数时,封装成一个Bundle对象。

[Android]如何做一个崩溃率少于千分之三噶应用app(28)- 跨module操作能力_第7张图片

Bundle对象保存在postcard当中


通过Autowired关键字会在编译时注解中生成一个继承ISyring接口的java文件。

[Android]如何做一个崩溃率少于千分之三噶应用app(28)- 跨module操作能力_第8张图片

这里通过注入跳转后的对象target,然后强转后将对象的变量获取intent中的值。

[Android]如何做一个崩溃率少于千分之三噶应用app(28)- 跨module操作能力_第9张图片

目标文件中通过@Autowired的注解和inject方法来注入变量参数。

此处还是会使用到反射的,autowire方法通过拼接编译时注解的java文件名,然后使用反射创建对象。

[Android]如何做一个崩溃率少于千分之三噶应用app(28)- 跨module操作能力_第10张图片



需要注意的是,请使用ARouter的最新版本,1.1.0版本以前,无法获取到Fragment实体。


I‘m  Back.

下一节将会更精彩,敬请期待!!!

群号是316556016,也可以扫码进群。我在这里期待你们的加入!!!

[Android]如何做一个崩溃率少于千分之三噶应用app(28)- 跨module操作能力_第11张图片

你可能感兴趣的:([Android]如何做一个崩溃率少于千分之三噶应用app(28)- 跨module操作能力)