189 8069 5689

3000行代码怎样简化成300行?来,一文来教你!-创新互联

前言

APT(Annotation Processor Tool)是用来处理注解的,即注解处理器。 APT 在编译器会扫描处理源代码中的注解,我们可以使用这些注解,然后利用  APT自动生成  Java代码,减少模板代码,提升编码效率,使源码更加简洁,可读性更高。

采用H5响应式网站+css3国际标准网站建设,让网站自动适应用户使用终端设备,PC、平板、手机等,一个网址适应,一套内容统一战略,节约企业资源。创新互联还提供网站后期营销如:软文平台卖链接广告投放等。一般建站公司不为企业填充资料,更谈不上内容策划,结果导致网站界面优秀,内容却十分空泛或整体不协调,内容策划、内容填充请交给我们。

1、具体场景

下面我将会以项目中常见的 intent 页面跳转为例,给大家演示一下,如何自动生成  intent代码,以及对 getIntent的参数自动赋值。

要实现上面这个功能我们需要了解  APT、以及 JavaPoet。如果不太了解的同学可以先去了解一下。

常用写法

  Intent intent = new Intent(this,OtherActivity.class);
  intent.putExtra("name",name);
  intent.putExtra("gender",gender);
  startActivity(intent);

数据获取

  String name = getIntent().getStringExtra("name",name);  String gender = getIntent().getStringExtra("gender",gender);

上述代码很必要但重复性又很高,写多了会烦,又浪费时间。并且在数据传递与获取时  key 值都需要保持一致,这又需要我们新建很多的常量。所以,这里我们希望上述的数据传递与获取可以自动生成。

为了实现这个需求,我们需要实现如下功能:
1)自动为  OtherActivity类生成一个叫做  OtherActivityAutoBundle 的类
2)使用建造者模式为变量赋值
3)支持  startActivity 或  startActivityForResult 跳转
4)支持调用一个方法即可解析  Intent 传递的数据,并赋值给跳转的  Activity 中的变量

我们需要自动化如下代码:

  new OtherActivityAutoBundle()
          .name("小明")
          .gender("男")
          .start(this);//或 startActivityForResult(this,requestCode)

在 OtherActivity 中,自动为变量赋值:

  new OtherActivityAutoBundle().bindIntentData(this,getIntent());

2、搭建 APT 项目

a、创建一个 Java Library,并创建注解类
例如:

  @Target(ElementType.FIELD)  @Retention(RetentionPolicy.CLASS)  public @interface AutoBundle {      boolean exclude() default false;//不参与 intent、bundle 传值
      boolean addFlags() default false;//添加 activity 启动方式
      boolean isCloseFromActivity() default false;//是否关闭 FromActivity
      boolean isBundle() default false;//是否使用 Bundle 对象传值
      boolean isSerializable() default false;//是否是 Serializable 类型
      boolean isParcelable() default false;//是否是 Parcelable 类型
      boolean isParcelableArray() default false;//是否是 ParcelableArray 类型
      boolean isParcelableArrayList() default false;//是否是 ParcelableArrayList 类型
  }

b、再创建一个 Java Library,并将上一步 Java Library 添加进来

此时,我们还需要在该 Library 中创建  resources 文件夹;接着在  resources 中创建  META-INF 和  services 两个文件夹;然后在  services 中创建一个名为  javax.annotation.processing.Processor 的文件。最后在该文件中写入我们注解处理器的全路径。

这里我们也可以使用自动化工具  implementation 'com.google.auto.service:auto-service:1.0-rc2' 感兴趣的去搜一下具体用法

3000行代码怎样简化成300行?来,一文来教你!

文章名称:3000行代码怎样简化成300行?来,一文来教你!-创新互联
网站路径:http://jkwzsj.com/article/epgcc.html

其他资讯