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

大家好,我系苍王。

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

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

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

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

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

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

使用ARouter注册一个Fragment

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

编译时注解注册为RouteType为Fragment

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

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

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

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

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

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

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

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

这里需要继承ARouter的IProvider接口

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

编译时注解会注册RouteType.PROVIDER

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

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

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

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

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

在LogisticsCenter中的completion方法

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

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

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

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

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

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

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

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

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

Bundle对象保存在postcard当中

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

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

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

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

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

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

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

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

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

I‘m  Back.

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

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

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

    原文作者:CangWang
    原文地址: https://www.jianshu.com/p/b23937d4f6dc
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞