美文网首页Android杂识TECH_ANDROIDAndroid开发感悟
项目里使用MVP和Dagger的有福了!!!绝对提升效率

项目里使用MVP和Dagger的有福了!!!绝对提升效率

作者: JessYan | 来源:发表于2016-11-18 13:27 被阅读10036次

    原文地址: http://www.jianshu.com/p/56cf17ab896d

    项目里使用MVP和Dagger的有福了!!!绝对提升效率

    • 在之前的 文章里 提到了我们为什么要在项目中使用MVP,Dagger,Rxjava,为很多才接触这些技术的朋友解答了疑惑
    • 随着项目迭代,代码量的增大,它们带给我们的好处会越来越明显,但是在前期的开发中绝对有一点让不少朋友烦恼,那就是每写一个页面,都会多写很多MVPDagger的类和接口,虽然可以重用,但是还是有很多地方免不了复制粘贴,其实这些文件都是一些模版代码,大多都只是改一下文件名而已,所以有没有方法自动生成这些模版代码呢?

    使用Template生成模版代码

    注意!!!现在 Template 在这篇文章的基础上已完成升级,支持一键生成所有文件,并且高度可配置,详情请查看 请一定记得 Star 感谢

    JessYan 的不懈努力下, 现在甚至能 一键生成整个 Module,请一定不要错过

    如果之前已经用过Template那你可以直接跳到最后,后面附送MVPArms框架的MVPDagger相关类的模版,现在可以非常轻松使用MVPArms框架,构建属于自己的MVP+Dagger2+Retrofit+Rxjava项目,你只用专注于逻辑,其他都交给MVPArms

    1.添加模版

    image

    2.使用模版生成相关类

    image

    注意事项

    • 至于本框架一个页面要生成哪些文件,请以Demomvp包下的UserActivity为例子,再参照以下注意事项

    • 通过Template生成对应页面的MVP和Dagger代码,请注意输入框中输入的名字必须相同

    • 由于每个项目包结构都不一定相同,所以每生成一个文件需要自己import包名,可以在设置中设置自动导入包名

    • 请在对应包下按以下顺序生成对应代码,Contract->Model->Presenter->Activity->Module->Component,如我要为一个名字为User的Activity生成对应文件,那我要先在Contract包下使用Contract模版生成UserContract,按此顺序直到生成完UserComponent

    • 因为在按此顺序生成Activity时,Module和Component还没生成,但是Activity中有它们的引用,所以会报错,但是不用理会

    • 继续将Module和Component生成完后,编译一下项目再回到Activity,按提示在setupActivityComponent()方法中修改一个方法名即可

    • 如果想生成Fragment的相关文件,则将上面构建顺序中的Activity换为Fragment,并将通过模版生成的Component接口中inject方法的参数改为此Fragment

    • 如果你不使用本框架也可以根据自己的需求调整或者新建自己的模版,自动生成自己想要的mvpdagger文件

    Where

    模版规则在项目根目录的MVP_generator_solution文件中


    Hello 我叫Jessyan,如果您喜欢我的文章,可以在以下平台关注我😘

    相关文章

      网友评论

      • developerYk: 写的很66,目前在学习你的MVP 框架 感谢作者分享!!!
        JessYan:@toStringy 下午会发布这个文章的加强版,一键生成所以类文件
      • Mynameis涂迪:真心感谢jessyan的分享
        JessYan:@Mynameis涂迪 共同进步:smile:
      • Lyhvin: 学习了 不错
      • 仁昌居士:楼主我可能表示错意思了。是我有三个接口,每个接口的全路径都不同。我要在调用某个接口是要切换,baseurl部分,那我该怎么做?
        baseurl除了传string还有个重载方法我没找到,不是就一个getBaseUrl()吗?
        JessYan:@痕无羽 是这样得,目前有两个方法,1,创建三个retrofit对象,设置不同的baseurl,2,用@url注解将全路径传到参数里,我现在在研究retrofit的源码,我会针对我的框架给出比较方便的解决方案
      • 仁昌居士:请问楼主,我需要调用的是三个完全不同的接口,baseurl每个都不一样,那我该怎么写?
        仁昌居士:@jessyan 楼主我可能表示错意思了。是我有三个接口,每个接口的全路径都不同。我要在调用某个接口是要切换,baseurl部分,那我该怎么做?
        baseurl除了传string还有个重载方法我没找到,不是就一个getBaseUrl()吗?
        JessYan:@痕无羽 需要同时调用三个接口的话,可以使用@url注解传入全路径,也可以使用同一个okhttp构建三个retrofit
      • 仁昌居士:楼主您好。您的项目,我是该作为module来加,还是在您的项目中直接加Activity。来写的。请原谅我的无知,我还是个菜鸟
        仁昌居士:再请问,您有讨论群吗?
        仁昌居士:跪谢大神
        JessYan:新项目直接将项目改了包名,在上面直接开发,旧项目想集成按文档的步骤来集成
      • 648cf77e9cc7:楼主,我直接新项目使用你写的框架 改变包名或者重命名weapplicaiton后,运行app后build过程都是好的 但是启动apk就会包找不到weapplication的错误.manifest里面我也改了重命名后的application.看到你的wiki里面说改包名后要对应修改manifest,我不知道我不是不少做了什么
        包名和applicationName我都修改过 不知道是不是还要修改什么地方 期待你的回复
        JessYan:@敲码道士 改包名不会有任何问题,重命名WEApplication,运行会出现找不到WEApplication的问题,现在两个解决办法要1.不要重命名WEApplication 2.关闭instant run
        JessYan:@敲码道士 这个是instant run引起的,在设置中关闭instant run 就可以了
      • 虞桀:楼主,再次拜谢,没有你的帮忙估计要走不知道多少弯路
        longzekai:@jessyan :+1: :+1:
        JessYan:@虞桀 其实做开源并不能给我带来任何收入,相反我会投入更多时间去维护去优化,但是有你们的支持,是我走下去的动力,大家能一起分享知识一起进步,我觉得付出一切的都是值得的
      • 梦华芳秋:这个好!
      • OneBelowZero:已解决 不过还是感谢楼主 框架写的很棒 加油
        OneBelowZero:@最后的大魔王 事实上 我的框架 是结合 Retrofit + Dagger2 的 不用修改baseUrl 只要@GET 或者@POST 的时候使用 对应的@Url字段就可以。
        JessYan:@最后的大魔王 我的框架已经解决了,这些问题,直接更改里面提供的baseurl方法就可以了
        碧海鱼龙:@OneBelowZero :joy: 大胸弟怎么解决的!
      • OneBelowZero:你可以具体一点吗? 你的框架写的很好 我正在学习 研究 已经star 但是 我现在急于知道 这样切换baseUrl我试过 @name 和stackoverflow 上面提问 但是目前还没解决 谢谢~
      • OneBelowZero:楼主 写的很好 稍后 我会尝试 请教一下 Dagger2 + Retrofit 如何切换baseurl呢
        JessYan:@OneBelowZero baseurl除了传string还有个重载方法,看看我框架怎么做的

      本文标题:项目里使用MVP和Dagger的有福了!!!绝对提升效率

      本文链接:https://www.haomeiwen.com/subject/wiojpttx.html