MVPArms MVP+Dagger+Rxjava+Retrofit快速集成框架

MVPArmsTemplePlugin:这是一个用于MVPArms配套使用的插件 MVPArmsTemplatePlugin 说明 MVPArms专用模板插件,用于一键生成mvparms相关文件,由于as4.1之后删除了templates,所以单独写了一份。思路复刻,除了文件路径放到Other中了,其余基本一致。 下载 安装 手动: 下载完成后按照以下步骤进行安装 Settings/Preferences > Plugins > :gear: > Install plugin from disk... 使用 所用工具 参考 立即下载

原文地址: http://www.jianshu.com/p/48e66e879061

前言

  • 今年的Android技术圈中MVP,Dagger2,Rxjava,Retrofit这些词汇非常火,随便打开一个技术论坛都充斥着大量的关于这些技术的文章,Github也充斥着各种以基于MVP+Retrofit+RxJava+Dagger2+MaterialDesign开发的xxxx为标题的开源项目或Demo.

  • 但是大家这么热心的开源此类项目,一直重复的做着同样的事教授大家使用的方式和技巧有没有想过依赖一个第三方库,就可以快速的搭建此类框架?

What is MVPArms?

  • MVPArms是一个集成了大量Android主流框架,并且全部使用Dagger2管理,以及提供API将所有库连接起来方便使用,还提供详细的Wiki文档.

  • 它可以使开发后面的所有项目都不用重复的复制粘贴(用过此类框架的朋友应该知道,这些库都依赖其它的库,就算一个build.gradle都会浪费很多时间),一个依赖省去很多烦恼,而且对于新手来说这些框架难的不仅仅是API的使用,更难的是怎么把它们结合到一起,应对各种场景的使用.

  • 对于一个新的Android项目,特别是熟练使用Dagger2和Rxjava的开发者,你们只需要将此项目Clone下来,Demo只实现了一个页面,将此页面删除掉,添加所需要的Retrofit API,你的框架就搭建好了,你就可以直接使用Demo进行后续的开发,包结构也适合后面的扩展.

Notice

Feature

  • 通用框架,适合所有类型的项目,支持大型项目的开发,兼容组件化开发,可作为组件化的 Base 库

  • 框架高度可自定义化,可在不修改框架源码的情况下对 Retoift , Okhttp , RxCache , Gson 等框架的特有属性进行自定义化配置,可在不修改框架源码的情况下向 BaseApplication , BaseActivity , BaseFragment 的对应生命周期中插入代码

  • 全局使用 Dagger2 管理,独创的建造者模式 Module ,可实现使用 Dagger2 向框架任意位置注入自定义参数(将所有模块使用
    Dagger2 连接起来,绝不是简单的使用)
  • 全局监听整个 App 所有 Activity 以及 Fragment 的生命周期(包括三方库),并可向其生命周期内插入代码
  • 全局监听 Http Request(请求参数, Headers …), Response (服务器返回的结果, Headers ,耗时 …)等信息(包括 Glide 的请求),可解析 json 后根据状态码做相应的全局操作以及数据加密, Cookie 管理等操作
  • 全局管理所有 Activity (包括三方库的 Activity),可实现在整个 App 任意位置,退出所有 Activity ,以及拿到前台 Activity 做相应的操作(如你可以在 App 任何位置做弹出 Dialog 的操作)
  • 全局 Rxjava 错误处理,错误后自动重试,捕捉整个应用的所有错误
  • 全局 UI 自适应
  • 图片加载类 ImageLoader 使用策略模式和建造者模式,轻松切换图片加载框架,方便功能扩展
  • 修改包名后就可以直接使用,快速接入(老项目接入请按下面的步骤)

Where?

MVPArms欢迎Star和Fork

Architectural

Package Structure

How?

Wiki

详细用法请参照Wiki,下面只是简单的介绍下MVP

Contract

根据Google官方的MVP项目,可以在Contract中定义MVP的接口,便于管理,此框架使用Dagger注入Presenter无需定义Presenter接口,所以Contract只定义Model和View的接口

public interface UserContract {
    //对于经常使用的关于UI的方法可以定义到BaseView中,如显示隐藏进度条,和显示文字消息
    interface View extends BaseView {
        void setAdapter(DefaultAdapter adapter);
        void startLoadMore();
        void endLoadMore();
    }
    //Model层定义接口,外部只需关心model返回的数据,无需关心内部细节,及是否使用缓存
    interface Model {
        Observable<List<User>> getUsers(int lastIdQueried, boolean update);
    }
}

View

一般让Activity或Fragment实现Contract中定义的View接口,供Presenter调用对应方法操作UI,BaseActivity默认注入Presenter,如想使用Presenter,必须指定Presenter的范型,和实现setupActivityComponent来提供Presenter需要的Component和Module

public class UserActivity extends WEActivity<UserPresenter> implements UserContract.View {

    @Override
    protected void setupActivityComponent(AppComponent appComponent) {
        DaggerUserComponent
                .builder()
                .appComponent(appComponent)
                .userModule(new UserModule(this))
                .build()
                .inject(this);

    }

    @Override
    protected View initView() {
        return LayoutInflater.from(this).inflate(R.layout.activity_user, null, false);
    }

    @Override
    protected void initData() {
       }
}

Model

Model实现Contract的Model接口,并且继承BaseModel,指定范型为ServiceManager和CacheManager,然后通过两个Manager拿到需要的Service和Cache为Presenter提供需要的数据(是否使用缓存请自行选择,Presenter无需关心细节)

public class UserModel extends BaseModel<ServiceManager,CacheManager> implements UserContract.Model{
    private CommonService mCommonService;
    private CommonCache mCommonCache;

    public UserModel(ServiceManager serviceManager, CacheManager cacheManager) {
        super(serviceManager, cacheManager);
        this.mCommonService = mServiceManager.getCommonService();
        this.mCommonCache = mCacheManager.getCommonCache();
    }

    @Override
    public Observable<List<User>> getUsers(int lastIdQueried, boolean update) {

    }

}

Presenter

Presenter在MVP中的大部分的作用为通过从Model层接口获取数据,在调用View层接口显示数据,首先实现BasePresenter,指定Model和View的范型,注意一定要指定Contract中定义的接口,Presenter需要的Model和View,都使用Dagger2注入,这样即解藕又方便测试,怎么注入?

@ActivityScope
public class UserPresenter extends BasePresenter<UserContract.Model, UserContract.View> {

    @Inject
    public UserPresenter(UserContract.Model model, UserContract.View rootView) {
        super(model, rootView);
    }
    //这里定义业务方法,相应用户的交互
    public void requestUsers(final boolean pullToRefresh) {
    }
}

Acknowledgement

感谢本框架所使用到的所有三方库的Author,以及所有为Open Sourece做无私贡献的Developer和Organizations,使我们能更好的工作和学习,本人也会将业余时间回报给开源社区

  1. MvpGoogle官方出品的Mvp架构项目,含有多个不同的架构分支(此为Dagger分支).
  2. Dagger2Google根据Square的Dagger1出品的依赖注入框架,通过Apt编译时生成代码,性能优于使用运行时反射技术的依赖注入框架.
  3. Rxjava提供优雅的响应式Api解决异步请求以及事件处理.
  4. RxAndroid为Android提供响应式Api.
  5. Rxlifecycle在Android上使用rxjava都知道的一个坑,就是生命周期的解除订阅,这个框架通过绑定activity和fragment的生命周期完美解决.
  6. RxCache是使用注解为Retrofit加入二级缓存(内存,磁盘)的缓存库.
  7. RxErroHandler 是 Rxjava 的错误处理库,可在出现错误后重试.
  8. RxPermissions用于处理Android运行时权限的响应式库.
  9. RetrofitSquare出品的网络请求库,极大的减少了http请求的代码和步骤.
  10. Okhttp同样Square出品,不多介绍,做Android都应该知道.
  11. Autolayout鸿洋大神的Android全尺寸适配框架.
  12. GsonGoogle官方的Json Convert框架.
  13. ButterknifeJakeWharton大神出品的view注入框架.
  14. Androideventbus一个轻量级使用注解的Eventbus.
  15. TimberJakeWharton大神出品Log框架容器,内部代码极少,但是思想非常不错.
  16. Glide此库为本框架默认封装图片加载库,可参照着例子更改为其他的库,Api和Picasso差不多,缓存机制比Picasso复杂,速度快,适合处理大型图片流,支持gfit,Fresco太大了!,在5.0以下优势很大,5.0以上系统默认使用的内存管理和Fresco类似.
  17. LeakCanarySquare出品的专门用来检测Android和Java的内存泄漏,通过通知栏提示内存泄漏信息.

Hello 我叫Jessyan,如果您喜欢我的文章,可以在以下平台关注我��
* GitHub: https://github.com/JessYanCoding
* 掘金: https://gold.xitu.io/user/57a9dbd9165abd0061714613
* 简书: http://www.jianshu.com/u/1d0c0bc634db

Android代码-MVPArmsTemplate A template for Android Studio to create MVPArms and MVPArt Page MVPArmsTemplate 和 MVPArtTemplate 是 JessYan 为强大的 MVPArms 以及 MVPArt 打造的一系列高度可配置且炒鸡炫酷的插件式模版, 可以为每个业务页面一键自动生成 File、Xml, 还可以自定义配置文件名、布局名和用于文件生成的目标包路径, 并且每一个文件都可以控制生成与否, 如果想一键搭建 MVPArms 的官方架构, 请使用 MVPArms 的 Module 级模板 > Tips: 若您基于本模板修改并且开源于网络, 请注明出处, 尊重开源, 才有人愿意开源, 谢谢! 此模板会持续保持更新新的内容并同步兼容最新的 AndroidStudio 稳定版, 如果最新的模板代码不能兼容您的 AndroidStudio 旧版本, 请自行升级 AndroidStudio 到最新的稳定版, 或者自行回滚模板代码 (有些版本在可以在 releases 中找到) 到能兼容旧版本的代码 (因为模板也是和 AndroidSt 立即下载

相关推荐

MVPArmsTemplate,android studio创建mvparms页面的模板.zip

android studio创建mvparms和mvpart页面的模板

第一篇:了解和使用MVPArms项目

准备: github地址:https://github.com/JessYanCoding/MVPArms 其它的不想说了,大家可以先看看项目介绍,但我可以告诉大家的是,MVPArms很强大,学习或使用前一定要了解一下它。所以,你需要先看看升级日志和文档说明 a、升级日志 https://github.com/JessYanCoding/MVPArms/wiki/UpdateLog#1.4...

莫闲的专栏 4994

Linux yum源配置以及yum命令讲解

前面为大家介绍了RPM二进制包安装软件,RPM包安装的最大的缺点也提到过,就是依赖性太强,一旦遇到依赖问题,则需要我们手动解决包之间具有依赖性的问题,今天为大家介绍一种可自动解决包之间依赖关系的安装方式:yum。 yum 全称“Yellow dog Updater, Modified”,是一个专门为了解决包的依赖关系而存在的软件包管理器。就好像 Windows 系统上我们通常可以通过各种软件管家实现软件的一键安装、升级和卸载,yum就是Linux 系统中的一键安装工具。yum 解决依赖关系的基本逻辑是:yu

九派Linux的博客 2283

标题:一键搭建高效Android开发框架:MVPArms详解与应用

**1. 项目介绍** MVPArms 是一个基于MVP架构的全能型Android开发框架,它集成了Dagger2、RxJava、Retrofit等多种流行库,旨在让你的开发工作更快速、更便捷。该项目不仅提供了清晰的代码结构和良好的可扩展性,还为新老项目提供了一键生成模组的特性,大大减少了初始化项目的复杂度。 **2. 项目技术分析** MVPArms 的核心技术包括: - **MVP架构...

gitblog_00025的博客 528

从零开始构建AURIX TC397开发环境:硬件选型与IDE配置全攻略

本文详细介绍了如何从零开始构建AURIX TC397开发环境,涵盖硬件选型、IDE配置及外设驱动开发等关键步骤。针对TriCore架构的高性能特性,提供了开发板选型建议、AURIX Development Studio(ADS)安装配置指南,以及GPIO和CAN FD驱动的实战代码示例,帮助开发者快速上手TC397系列微控制器的开发工作。

7up55的博客 205

多路输出电源的交叉调整率:从理论到无源优化实践

本文深入探讨了多路输出电源中的交叉调整率问题,分析了其物理根源及无源优化方法。通过漏感与耦合的理论分析,结合加权反馈、电感耦合等五种无源优化技术,帮助工程师有效解决交叉调整率挑战。文章还以TDK-Lambda CUT75系列为例,展示了优化技术的实际应用与效果。

weixin_26886855的博客 280

MVPArms官方快速组件化方案开源,来自5K star的信赖

原文地址: https://www.jianshu.com/p/f671dd76868f 0 前言 0.1 起源 0.2 组件化方案分析 0.2.1 业务组件的划分和代码隔离 0.2.2 路由框架 0.2.3 基础库 0.3 ArmsComponent 的优势 1 简介 1.1 什么是组件化? 1.2 为什么要组件化? 1.3 分析现有的组件化方案 1.4 如何选择组件化方案...

weixin_34324081的博客 405

玩转Zabbix智能告警:降噪、排班、认领、升级、IM协同

集成Zabbix告警到FlashDuty,获得告警降噪、智能排班、IM协同等能力

n9ecommunity的博客 1038

MVPArms官方快速组件化方案开源,来自5K star的信赖,程序员必学之一

总之啊,家里没矿的同学们,如果你们想以后的日子过得好一些,多想想你们的业余时间怎么安排吧;技术方面的提升肯定是重中之重,但是技术外的一些“软实力”也不能完全忽视,很多时候升职确实是因为你的技术足够强,但也与你的“软实力”密切相关在这我也分享一份大佬自己收录整理的Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅并给下属员工学习的精品资料。

m0_62289824的博客 701

嵌入式Linux网络调试踩坑记:YT8531/YT8521 PHY驱动移植与设备树配置实战

本文深入解析嵌入式Linux系统中YT8531/YT8521 PHY驱动移植与设备树配置的实战经验。从网络不通的常见现象入手,详细介绍了驱动移植关键点、设备树配置详解及常见问题排查技巧,帮助开发者快速解决RGMII接口调试难题,提升嵌入式网络开发效率。

weixin_42525328的博客 445

第170篇 因子图优化入门——图模型在状态估计中的应用

本文系统介绍了从滤波方法到因子图优化的思维转变,重点解析了因子图的原理与应用。首先对比了递推式滤波(卡尔曼滤波等)与全局优化的区别,指出优化方法能利用所有信息且适合处理稀疏结构。然后详细阐述了因子图的二部图结构(变量节点和因子节点)及其将复杂概率分布分解为小因子乘积的优势。文章讲解了因子图优化如何转化为最小二乘问题,并介绍高斯-牛顿法和LM方法等求解技术。最后对比了g2o、Ceres和GTSAM三大主流框架的特点及适用场景,强调了初始化和鲁棒核函数的重要性,为SLAM相关面试提供了实用建议。

郑伟强dev的专栏 374

Arms是一个整合了大量主流开源项目的Android Mvp快速搭建框架

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34087307的博客 902

Django框架中settings文件的部署建议

为了更好地管理开发和生产环境的配置,建议将settings文件分为多个文件,分别用于不同的环境。然后,通过在启动应用程序时指定不同的settings文件,来加载相应的配置。在Django框架中,settings.py文件是非常重要的配置文件,它包含了项目的各种设置和选项。在Django框架中,settings.py文件是非常重要的配置文件,它包含了项目的各种设置和选项。可以使用Python的。为了更好地管理开发和生产环境的配置,建议将settings文件分为多个文件,分别用于不同的环境。

WELL_CODER的博客 129

android 新闻项目,新闻项目安卓端

A common Architecture for Android Applications developing based on MVP, integrates many Open Source Projects (like Dagger2、RxJava、Retrofit ...), to make your developing quicker and easier.Ar...

weixin_42355570的博客 184

浅谈银行内部户治理

为避免该问题的发生,对内部户入账类交易,或内部户是可透支的账户(如系统间往来),可考虑通过异步方式更新账户余额(当然,根本上还是要考虑银行业务量的实际,异步消息接口很多时候没有同步接口方便),另外,在进行内部户余额更新时,可以通过定时的借贷方发生额轧差的方式,将多次的锁请求,简化为一次(当然,发生额明细本身在加工账户交易历史时,是不能汇总的)。内部户在银行系统中,属于业务属性较少,实现相对简单,原理也很容易讲清的系统,但管中窥豹,越是基础的东西,越能看出一家银行业务、内控的专业程度。

银行信息系统应用架构详解 789

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

MVPArms MVP快速集成框架

前言 今年的Android技术圈中MVP,Dagger2,Rxjava,Retrofit这些词汇非常火,随便打开一个技术论坛都充斥着大量的关于这些技术的文章,Github也充斥着各种以基于MVP+Retrofit+RxJava+Dagger2+MaterialDesign开发的xxxx为标题的开源项目或Demo. 但是大家这么热心的开源此类项目,一直重复的做着同样的事教授大家使用的方式和技巧有没有想

CD449667584的博客 4175

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

MVPArms框架深度解析:构建高效Android MVP架构的利器

在Android开发领域,架构设计一直是开发者关注的焦点。随着项目规模扩大和业务复杂度提升,如何构建一个清晰、可维护、可扩展的应用架构变得尤为重要。MVPArms框架正是为解决这些问题而生的一个优秀解决方案。 ## 什么是MVPArms框架 MVPArms是一个高度可配置化的Android MVP快速集成框架,它整合了大量主流开源项目,为开发者提供了一套完整的MVP架构解决方案。该框架基于Go...

gitblog_00150的博客 512

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

一款最流行的MVPArms MVP快速集成框架Retoift,Okhttp,RxCache,Gson,RxLifeCycle, Dagger2,Rxjava,ImageLoader

今年的Android技术圈中MVP,Dagger2,Rxjava,Retrofit这些词汇非常火,随便打开一个技术论坛都充斥着大量的关于这些技术的文章,Github也充斥着各种以基于MVP+Retrofit+RxJava+Dagger2+MaterialDesign开发的开源项目或Demo. 但是大家这么热心的开源此类项目,一直重复的做着同样的事教授大家使用的方式和技巧有没有想过依赖一个

shenggaofei的博客 7862

MVpArms集成框架快速开发

这个框架是进公司的时候有个新同事比我晚进几天,然后他开始写的项目,由于身体原因休息了,由我接手他的项目,这个项目框架是git上很火的项目框架,使用率还是很高的,这个框架集成了大部分常用的第三方,所以很是快捷便利,包括屏幕的适配方案都有处理。git上搜索MVPArms。 ...

qq_15855289的博客 667

探索MVPArms的魅力:一键构建高效安卓开发框架

探索MVPArms的魅力:一键构建高效安卓开发框架 在这个快速迭代的时代,开发者们对于提升工作效率的追求从未停止。MVPArms项目,由JessYanCoding倾力打造,旨在简化复杂性,让你告别繁琐的项目配置过程,轻松步入高效开发的世界。 项目介绍 MVPArms是一个专为安卓应用程序设计的强大模板系统,它提供了一套完善的架构支持,包括MVP模式、Dagger2依赖注入、Retrofit数据请求...

gitblog_00833的博客 823

一个快速集成框架:MVP+Dagger+主流框架,有它足矣

前言 今年的Android技术圈中MVP,Dagger2,Rxjava,Retrofit这些词汇非常火,随便打开一个技术论坛都充斥着大量的关于这些技术的文章,Github也充斥着各种以基于MVP+Retrofit+RxJava+Dagger2+MaterialDesign开发的xxxx为标题的开源项目或Demo. 但是大家这么热心的开源此类项目,一直重复的做着同样的事教授大家使用的方式

zjd934784273的专栏 1294

Android 客户端 MVP+Dagger2+Databinding+Rxjava+Retrofit+Okhttp3

Android 客户端 MVP+Dagger2+Databinding+Rxjava+Retrofit+Okhttp3

未来很长,但我会努力的走下去。 2061

MVPArms 模块模板使用教程

MVPArms 模块模板使用教程 项目介绍 MVPArms-Module-Template 是一个用于快速搭建 MVPArms 架构的官方模板。MVPArms 是一个基于 MVP 模式,结合 Dagger2、Retrofit 和 RxJava 的 Android 开发框架。该模板旨在帮助开发者快速启动新项目,减少繁琐的配置工作,让新手也能轻松进入 MVPArms 的世界。 项目快速启动 安装步骤 ...

gitblog_00421的博客 537
上一篇: !!!解决Retrofit多BaseUrl及运行时动态改变BaseUrl?
下一篇: 改造 Android 官方架构组件 ViewModel
JessYanCoding
博客等级 码龄10年 63粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值