美文网首页注解
Android自定义注解开发

Android自定义注解开发

作者: 王远道呀 | 来源:发表于2019-10-28 20:14 被阅读0次

    最近在对项目进行重构,模块化的拆分是必须的。由于是pad项目,本身Activity用到的次数较少,大多是fragment之间的跳转,ARouter不能做很好的支持,并且处于对项目安装包瘦身的考虑,决定自定义一个简单的路由组件,用于支持Activity和Fragment的切换。

    开发一个自定义注解和把大象装进冰箱一样只有三步:

    1、实现在一个有参(path)的编译时注解IActivity

    2、实现一个在编译时把被注解标识的类和和参数path做映射的类IActivityCompiler

    3、实现一个跨模块跳转的工具方法RouterHelper

    下面是具体的实现:

    1 在项目中创建两个类型为Java Library的module(注意,类型一定要是Java Library)lib_annotation和lib_compiler。

    在lib_annotation中创建IActivity类:

    在lib_compiler的build.gradle修改依赖:

    implementation 'com.squareup:javapoet:1.8.0' //一款可以自动生成Java文件的第三方依赖

    implementation 'com.google.auto.service:auto-service:1.0-rc2' //自动在META-INF文件夹下生成Processor配置信息文件

    implementation project(':lib_annotation')

    并边写一个将注解生成映射文件的类IActivityCompiler

    将这两个module在app项目中进行引入:

    并在任意一个Actiivty类上进行注解:

    此时Rebuild的工程,将会在目录app/build/generated/source/apt/debug/com.common.base.router/下,创建一个名为Activity_Router_Mapper的映射文件(并没有...问题解决方案请参考“Java/kotlin混开,自定义注解的坑”)。

    假装我们已经解决了问题

    这个类里面实现了注解里面的参数和Activity路径的映射。

    经过一番研究,解决了无法生成映射文件的问题,接下来就创建项目的公共Android Library,实现RouterHelper:

    这里只是对RouterHelper做了一下简单的实现,可以在这个类里做更多的实现

    只需要这些简单的代码,Router库就实现了,只是在获取Activity的时候,也是通过反射实现的,这里还有继续优化的空间,有空继续优化。

    相关文章

      网友评论

        本文标题:Android自定义注解开发

        本文链接:https://www.haomeiwen.com/subject/sgtivctx.html