作家
登录

安卓AOP三剑客之Android APT技术浅谈

作者: 来源: 2017-10-16 16:04:53 阅读 我要评论

  • 3,在项目Gradle中添加 annotationProcessor project 引用

    IRemoteDataSource, RemoteDataSourceImpl

    1. compile project(':apt-delegate-annotation' 
    2. annotationProcessor project(':apt-delegate-compiler'

    4,如不雅有自定义注解的话,创建一个java的Module,专门放入自定义注解。项目与apt Module都需引用自定义注解Module

    4-1,主工程:

    1. compile project(':apt-delegate-annotation' 
    2. annotationProcessor project(':apt-delegate-compiler'
    1. compile project(':apt-delegate-annotation' 
    2. compile 'com.google.auto.service:auto-service:1.0-rc2' 
    3. compile 'com.squareup:javapoet:1.4.0' 

    5,生成的源代码在build/generated/source/apt下可以看到

    Android APT技巧浅谈

    可贵

    就apt本身来说没有任何可贵可言,可贵一在于设计模式和解耦思惟的灵活应用,二在与代码生成的繁琐,你可以手动字符串拼接,当然有更高等的弄法用squareup的javapoet,用建造者的模式构建出任何你想要的源代码

    长处

    它的强大年夜之处无需多言,看代表框架的源码,你可以学到很多新姿势。总的一句话:它可以做任何你不想做的复杂的工作,它可以帮你写任何你不想反复代码。懒人福利,老司机必备神技,可以进步车速,让你以任何姿势漂移。它可以生成任何源代码供你在任何处所应用,就像剑客的剑,快疾如风,无所不及

    Android APT技巧浅谈

    4-2,apt Module:

    我想稍微研究一下,APT还可以在哪些处所应用,比如:Repository层?

    APT在Repository层的测验测验

    每一次添加新房口都须要简单地修改很多处所,能不克不及把一部分代码主动生成,削减修改的次数呢?

    Repository层

    Android APT技巧浅谈

    长途数据源,属于收集请求相干

    懂得APT与简单进修之后,搭建Repository层时,发明有一些简单,反复模版的代码

    ILocalDataSource, LocalDataSourceImpl

    本地数据源,属于本地数据持久化相干

    IRepository,RepositoryImpl

    仓库代劳类,代劳长途数据源竽暌闺本地数据源

    Repository层APT设计思路

    发明在具体实现类中,大年夜多都是以代劳类的情势调用:办法中调用代劳对象,办法名称与参数,返回值类型都雷同。显然可以进行APT的测验测验

    • 简单的情况,具体实现类中只有一个代劳对象
    • 复杂的情况,有多个代劳对象,办法内并有一些变更

    期望结不雅:

    • 把RemoteDataSourceImpl主动化生成
    • 把LocalDataSourceImpl主动化生成
    • 把RepositoryImpl主动化生成

    要想具体实现类主动生成,起重要知道须要什么:

    • 便利主动生成java文件的类库
    • 主动生成类名字是什么
    • 须要注入的代劳对象
    • 让代劳对象代劳的办法集

    主动生成java文件的类库,可以应用 squareup javapoet

    主动生成类名字,代劳对象,办法集须要经由过程自定义注解设备参数的形成,在AbstractProcessor中获取

    Delegate

    Android APT

    1. @Retention(RetentionPolicy.SOURCE) 
    2. @Target(ElementType.TYPE) 
    3. public @interface Delegate { 
    4.  
    5. /** 
    6.  * delegate class package 
    7.  */ 
    8. String delegatePackage(); 
    9.  
    10. /** 
    11.  * delegate class 

        推荐阅读

        在云端开展深度学习正逢其时

      沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散!大年夜多半公共云都可以应用机械进修,这些供给了企业须要的人工智能的才能。就像深度进修一样,云计算让人工智能从新焕发>>>详细阅读


      本文标题:安卓AOP三剑客之Android APT技术浅谈

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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