AndroidApt之ActivityRoute的示例-创新互联

前言

成都创新互联公司-云计算及IDC服务提供商,涵盖公有云、IDC机房租用、服务器托管、等保安全、私有云建设等企业级互联网基础服务,咨询电话:13518219792

什么是Apt


APT从原理上讲是一个编译期的注解处理工具(Annotation Processing Tool)。一些主流的三方库(ButterKnife,Glide)都用到了这个技术来生成代码。

Apt有什么好处

  1. 自动生成模板代码,提高了开发效率
  2. 编译期对注解的处理,相对于运行期对注解的处理,性能上要好的多。

Gradle脚本中的apt和annotationProcessor


这两个从广义上说都是编译期的注解处理工具。只不过android-apt(其实是一个gradle插件,apt是插件命令)是早期的github的一个开源项目,annotationProcessor是gradle build tools 2.2之后自带的编译期注解工具(官方支持的,可替代开源的gradle插件android-apt)。android-apt的作者已经发表声明表示Android Studio插件已经支持annotationProcessor,并且会警告和阻止使用android-apt。总的来说,看你的gradle build tools的版本,低版本用android-apt(需要引入插件),高版本用annotationProcessor(无需引入插件)

代码设计

需求分析


这里将route模块分成三部分(一个android library,两个java library)
1、router-annotation(java library)


这里java工程里面只放注解的声明类。这里只实现了两个注解RouterActivity、RouterField。


2、router-compiler (java library)


这个工程是编译期依赖的工程,作用是编译期扫描代码,根据RouterActivity、RouterField这两个注解的使用,生成相关代码。这里需要讲下如何扫描代码并且生成代码的。这部分功能的实现主要依赖两个库:Google的auto-service(扫描代码),Squareup的javapoet(生成代码)


3、router (android library)


主要逻辑代码。在这个模块中会定义一些功能类和接口。router-compiler模块可以根据这些接口和功能类generate逻辑代码。需要注意的是router-compiler是不需要依赖router的,router-compiler是根据包名+类名的方式获取类的。


代码实现

router-annotation

RouterActivity是一个注解,用此注解修饰的Activity根据指定的路由地址,会自动添加到路由表中,当系统挂载了路由表之后,就可根据指定的路由地址来访问特定的Activity了。代码如下:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface RouterActivity {
  String[] value();
}

网站题目:AndroidApt之ActivityRoute的示例-创新互联
网页路径:http://scyanting.com/article/gihdo.html