如何解决Activity参数的类型安全及接口繁琐的问题

  • 类型安全:Bundle的K-V不能在编译期保证类型
  • 接口繁琐:启动Activity 时参数和结果传递都依赖Intent

onActivityResult为什么麻烦

  1. 代码处理逻辑分离,容易出现遗漏和不一致的问题
  2. setResult()写法不够直观,结果数据没有类型安全保障
  3. 结果种类较多时,onActivityResult就会逐渐臃肿难以维护

为什么Activity的参数存在类型安全问题

intent.putExtra()时和getIntent.getXxxExtra()时需要人工去保证类型安全


如何实现类型安全

  • 注解处理器生成Builder

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    @Builder
    public class UserActivity extends Activity{
    @Required
    String name;
    @Required
    int age;
    @Optional
    String title;
    @Optional
    String company;
    }

    UserActivityBuilder.builder(age, name)
    .title(title)
    .company(company);

    通过注解处理器生成注入逻辑

注解处理器程序的开发注意事项

  • 注意注解标注的类的继承关系
  • 注意注解标注的类为内部类的情况
  • 注意kotlin与java的类型映射的问题
  • 把握好代码生成和直接依赖的边界