MvpFrame是一款是一款MVP通用框架,使用简单,有效的解决项目中的高度耦合性,使项目更有层次结构。

版本更新记录

版本更新记录

前序

随着项目的功能迭代,传统的MVC架构已经很难满足开发需求了,高耦合让维护成本变得越来越高,代码冗余程度也越来越高,代码最后变得臃肿不堪。所以,在实际项目中,我们跟多的选择MVP架构。MVP架构是代码结构层次更加清晰、项目更加容易维护,代码耦合性降低了。本文对于基础的mvp使用不做解释。

一、MvpFrame架构优点:

1)用泛型指定Presenter层,然后直接createPresenter方法即可获取到对于的presenter。
2)Presenter的生命周期与Activity生命周期同步绑定。
3)抽象工厂模式和反射机制,获取每个Presenter对象。
4)对Presenter的缓存处理。
5)异常情况下(如内存吃紧),对Presenter进行onSaveInstanceState保存数据的异常处理。

二、使用说明

step1、添加依赖( 必选)

dependencies {implementation 'com.alin:mvpframe:1.0.2'implementation 'com.alin:common-library:1.0.1'
}复制代码

step2、注解@TargetPresenter(具体Presenter.class)( 必选)

step3、需要继承MvpActivity,并且指定Presenter的泛型类型TestMvpPresent(若有)( 必选)

step4、同时,实现Contract.IView<数据类型>( 可选)

step5、获取需要的Presenter,调用Presenter的初始化方法startWork()( 必选)。

 TestMvpPresent mPresenter = createPresenter();mPresenter.startWork();
复制代码

Activity使用示例:

@TargetPresenter(TestMvpPresent.class)
public class TestMvpActivity extends MvpActivity<TestMvpPresent> implements Contract.IView<TestBean>, View.OnClickListener {private TestMvpPresent mPresenter;@Overrideprotected int getContentViewId() {return R.layout.activity_test_activity;}@Overrideprotected void init(Bundle savedInstanceState) {//        创建说需要的PresentermPresenter = createPresenter();}@OnClick({R.id.start_tv,R.id.skip_tv})public void onClick(View view){switch (view.getId()){case R.id.start_tv:mPresenter.startWork();//调用Presenter的初始化方法break;}}@Overridepublic Context getViewContext() {return this;}@Overridepublic void showContentView() {}//    数据请求失败回调@Overridepublic void showError(String errorInfo, int errorCode) {}//    数据请求成功回调@Overridepublic void showContentData(TestBean data) {if (data != null) {showLog(data.toString());ToastUtil.showCenterToast(this,"TestMvpActivity : " + data.toString());}}
}
复制代码

Fragment使用示例:

@TargetPresenter(TestMvpPresent.class)
public class TestMvpFragment  extends MvpFragment<TestMvpPresent> implements Contract.IView<TestBean>, View.OnClickListener {private TestMvpPresent mPresenter;@Overrideprotected int getContentViewId() {return R.layout.fragment_test_mvp;}@Overrideprotected void init(Bundle savedInstanceState, View view) {//        创建说需要的PresentermPresenter = createPresenter();}@OnClick({R.id.start_fm_tv})public void onClick(View view ){switch (view.getId()){case R.id.start_fm_tv:mPresenter.startWork();break;}}@Overridepublic Context getViewContext() {return getContext();}@Overridepublic void showContentView() {mTestRllyt.showContentView();}//    数据请求失败回调@Overridepublic void showError(String errorInfo, int errorCode) {mTestRllyt.showEmptyView();}//    数据请求成功回调@Overridepublic void showContentData(TestBean data) {if (data != null) {showLog(data.toString());ToastUtil.showCenterToast(getContext(),"TestMvpFragment : " + data.toString());}}
}复制代码

三、补充说明:

如果只是简单的Activity、Fragment,不想继承MvpActivity、MvpFragment,可以直接继承CommonActivity。

普通的Activity使用示例:

public class TestCommonActivity extends CommonActivity {@Overrideprotected int getContentViewId() {return R.layout.activity_test_common;}@Overrideprotected void initialize(Bundle savedInstanceState) {}
}复制代码

普通的Fragment使用示例:

public class TestCommonFragment extends CommonFragment {@Overrideprotected int getContentViewId() {return R.layout.activity_test_common;}@Overrideprotected void initialize(Bundle savedInstanceState) {}
}
复制代码

四、架构设计策略

架构设计策略

五、可能遇到的问题说明

1、QA:common-library库的版本问题?

解决方式:请点击查看CommonLibrary,使用最新版本。

dependencies {implementation 'com.alin:mvpframe:1.0.2'implementation 'com.alin:common-library:1.0.1'
}复制代码

如果你觉得MvpFrame 能帮到你真正解决项目中的问题,就在博客中个我点个赞,或者去我的MvpFrame中star。 如果项目中有问题,可以直接给我留言。

联系方式

  github地址:https://github.com/Alin520/MvpFrame。掘金地址:https://juejin.im/post/5a7941c96fb9a0633f0dfe64CSDN地址:http://blog.csdn.net/hailin123123联系方式:欢迎加入QQ群:707202045
复制代码

转载于:https://juejin.im/post/5aa09e996fb9a028d936ba00

MvpFrame—MVP框架相关推荐

  1. android 最新框架组合,android 官方mvp框架优化:lifecycle-mvp,像前端那样组合式写页面...

    目录 1 前言 虽然在标题上,自己很随意的起了这么一个名字.其实并不是说它起个英文名就牛逼了.说白了,它其实就是mvp的思想加了lifecycle-component,然后加入了分层的思想,最后用Ty ...

  2. 基于事件通信的轻量级MVP框架实现,附源码

    在.NET中,对于ASP.NET,有MVC:对于WPF.SILVERLIGHT,有MVVM.然而在桌面开发领域,似乎微软并没有推出什么强力的框架.但笔者在写程序的时候很不喜欢把代码全部混杂在一个类中. ...

  3. Android MVP框架实现过程

    MVP框架实现过程 目的:View层和Model层分离,中间由Presenter处理逻辑. Prester作为View与Model交互的中间纽带,处理与用户交互的负责逻辑.这里我们只说明View和Pr ...

  4. android MVP框架

    尝试使用MVVM开发模式,让程序解耦. MVVM开发模式图: 优势 模型与视图完全分离,我们可以修改视图而不影响模型: 可以更高效地使用模型,因为所有的交互都发生在一个地方--Presenter内部: ...

  5. MVC、MVCS、MTV、MVP框架模式

    框架模式有哪些? MVC.MVCS.MTV.MVP.等等: MVC框架 经典MVC模式中 1.模型(Model)M是指业务模型 2.视图(View)V是指用户界面 3.控制器(Controller ) ...

  6. 移动架构之MVP框架

    MVP是在开发中常用的框架,要了解其原理,先要从了解MVC开始,这里就对MVP框架做一个简单的介绍 MVC MVC为Model,View与Controllor的缩写 Model:业务逻辑和实体模型 V ...

  7. (MVP框架)登录+数据展示

    MVP框架 登录 数据展示 依赖 implementation 'com.google.code.gson:gson:2.8.5' implementation 'com.github.bumptec ...

  8. MVP框架——Android

    个人用起来最舒服的MVP框架 框架使用 关于项目代码中的基础框架搭建 presenter和view的基类中加入了内存的优化 map介绍: 契约:连接M,V,P三层(通过接口实现的方式) Model:数 ...

  9. Android MVP框架学习

    什么是MVP框架 做Android开发也有好几年时间了,最近接触了Android开发的MVP模式,MVP即Model.View.Presenter的缩写.如果有过一些项目开发经验的人,在项目功能越来越 ...

最新文章

  1. 在ASP.NET中UrlRewrite的实现(能隐藏扩展名)之一
  2. wrapper包装java_java Object 类 与 Wrapper包装类
  3. CDP客户数据管理平台体系化搭建
  4. python文件的分类
  5. idea卸载删除旧版重新安装新版后,新版本idea程序打不开闪退的解决方案
  6. 计算机常发故障英语,vipkid英语常见问题解决办法
  7. Netcore webservice
  8. 集成CCFlow工作流与GPM的办公系统驰骋CCOA介绍(二)
  9. 探寻安全管理平台(SOC)项目的关键成功因素(4)
  10. OpenVAS安装说明
  11. Shell的脚本编程
  12. Adblock Plus 下载 | Google 插件下载
  13. NSIS中文用户手册下载(免费下载)
  14. 爬虫----记录某新闻详情页app逆向过程(app逆向初学第一次实战)
  15. mysql 身份证算年龄
  16. 京东php分销系统开源,2017Ecshop鸿宇小京东V7.2.3二次开发版分销多用户商城系统微信支...
  17. 超小型模块:IDO-SOM2D01可应用于物联网智能网关等领域
  18. 0基础学软件测试好学吗?这2个硬性要求没有达到的话奉劝你不要学...
  19. 【目标跟踪 SOT】SiamFC -用于对象跟踪的全卷积孪生网络
  20. VMwear虚拟机安装动态网卡和静态网卡(Basic Service版)

热门文章

  1. matlab保存f黑白图片_Matlab微积分
  2. android alertdialog view,Android AlertDialog 方法setView(view,0,0,0,0)开发自定义对话框
  3. java 上调下移_java – 在调整框架大小时,JLabel的位置会更...
  4. php读取西门子plc_AB PLC和西门子PLC之间需要交换数据
  5. python花式输出_关于python字符串format的一些花式用法
  6. 自动点击器如何设置最快_微视APP如何设置自动播放视频-微视APP设置自动播放视频的方法...
  7. Proxmark3 Easy Gui 4.0 5.0 5.1加强版免费获取啦最新编译2019/5/10
  8. 加密解密你了解多少?
  9. 基于流程的多维度企业管理框架(第三稿)
  10. ※部分VB文章汇总B※