作家
登录

Android模块化探索与实践

作者: 来源: 2017-05-18 13:03:07 阅读 我要评论

  1. getIntent().getIntExtra("intParam", 0); 
  2. getIntent().getData().getQueryParameter("preActivity"); 

为了简化这部分工作,路由框架 Router 中供给了 Injector 模块在编译时生成上述代码。参数注入器(Injector)部分经由过程 Java 编译时注解来实现,实现思路和 ButterKnife 这类编译时注解框架类似。

起首定义我们的参数注解 InjectUriParam :

  1. @Target(ElementType.FIELD) 
  2. @Retention(RetentionPolicy.CLASS) 
  3. public @interface InjectUriParam { 
  4.     String value() default ""

Android模块化摸索与实践

然后实现一个注解处理器 InjectProcessor ,在编译阶段生成获取参数的代码:

  1. @AutoService(Processor.class) 
  2. public class InjectProcessor extends AbstractProcessor { 
  3.     ... 
  4.    @Override 
  5.     public boolean process(Set<? extends TypeElement> set, RoundEnvironment roundEnvironment) { 
  6.         //解析注解 
  7.         Map<TypeElement, TargetClass> targetClassMap = findAndParseTargets(roundEnvironment); 
  8.         //解析完成后,生成的代码的构造已经有了,它们存在InjectingClass中 
  9.         for (Map.Entry<TypeElement, TargetClass> entry : targetClassMap.entrySet()) { 
  10.             ... 
  11.         } 
  12.         return false
  13.     } 
  14.     ... 

应用方法类似于 ButterKnife ,在 Activity 中我们应用 Inject 来注铰一?全局变量:

  1. @Inject User user

然后>

  • RouterInjector.inject(this); 
  • 如许我们就可以获取到前面经由过程 Router 跳转的传参了。

    • 因为篇幅限制,加上为了便于懂得,这里只贴出了极少部分 Router 框架的源码。欲望进一步懂得 Router 实现道理的可以到 GiuHub 去翻阅源码,Router 的实现还比较简陋,后面会进一步完美功能和文档,之后也会有零丁的文┞仿具体介绍。源码地址:https://github.com/BaronZ88/Router

    问题及建议

    资本名冲突

    汽车的┞封些模块是由不合的工厂临盆的,一辆 BMW 的发念头可能是由位于德国的工厂临盆的,它的主动变数箱可能是 Jatco(世界三大年夜变速箱厂商之一)位于日本的工厂临盆的,车轮可能是中国的工厂临盆的,最后交给华晨宝马的工厂同一组装成一辆完全的汽车。这就类似于我们在软件工程范呈攀里说的多团队并行开辟,最后将各个团队开辟的模块同一打包成我们可应用的 App 。

    1. defaultConfig { 
    2.    ... 
    3.    resourcePrefix "new_house_" 
    4.    ... 
    1. <application 

    2.   推荐阅读

        红帽张先民博士:开源驱动企业数字化转型

      【51CTO.com原创稿件】提到Linux,我们就会想到红帽,就跟提到Windows就会想到微软一样。作为一家专注于架构平>>>详细阅读


      本文标题:Android模块化探索与实践

      地址:http://www.17bianji.com/lsqh/35300.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)