Android MVP架构简析
参考:Android MVP 架构 - 简书
MVP优点:1.代码简洁
2.降低耦合,方便维护
MVP的使用使activity中的网络请求剥离出来,成为model、presenter。
model只负责网络请求,presenter负责处理请求网络后的数据处理:加载中 成功 失败 取消加载等,最后view进行界面的展示
MVP在实现代码简洁的同时,额外增加了大量的接口、类,不方便进行管理,于是Contract就登场了
Contract 契约、协议,主要是用于将model、presenter、view进行约束管理,方便后期类的查找维护。
下面是自己总结的伪代码:
在contract中定义MVP的接口:
public interface Contract{interface Model{//例如一个登录方法 随便写的几个登录参数void setLogin(String phone,String pwd,String loginBean,ApiCallBack<LoginBean>callback)}interface View{void LoginSuccess(LoginBean loginBean)void LoginFail(String errMsg)}interface Presenter{void setLogin(String phone,String pwd)}}
在model中请求网络数据:
public class Model implements Contract.Model{//实现contract中的model中的方法@SuppressLint("CheckResult")@Overridepublic void setLogin(String phone,String pwd,String loginBean,final ApiCallBack<LoginBean>callback){//进行网络请求ApiUtils.getApi().login(phone,pwd).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<ResponseBean<LoginBean>>() {@Overridepublic void accept(ResponseBean<LoginBean> loginBeanResponseBean) throws Exception {callBack.onResponse(loginBeanResponseBean);}}, new Consumer<Throwable>() {@Overridepublic void accept(Throwable throwable) throws Exception {callBack.onFailure(throwable);}});}}
在presenter中处理请求网络后的数据:
public class Presenter extends BasePresenter<Contract.View> implements Contract.Presenter{private Model model;//重写一个构造方法public Presenter(Contract.View view){super(view);model =new Model();}@Overridepublic void setLogin(String phone,String pwd){LoginBean loginBean = new LoginBean();loginBean.setPhone(phone);loginBean.setPassword(pwd);String loginjson;Gson gson=new Gson();loginjson=gson.toJson(loginBean);model.setLogin( phone, loginjson, new ApiCallBack<LoginBean>() {@Overrideprotected void onSuccess(LoginBean responseData, String message) {if (getView() != null) {getView().LoginSuccess(responseData);}}@Overrideprotected void onFailure(String error) {if (getView() != null) {getView().LoginFail(error);}}});}}
在View中展示界面:
public class View implement Contract.View{private Presenter mPresenter;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);//在初始化方法中实例化这个presentermPresenter = new Presenter(this);loginBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//然后在登录按钮的点击方法中调用mPresenter.setLogin(phone,pwd)}});}//最后再实现Contract中View中的方法@Overridepublic void LoginSuccess(LoginBean loginBean) {//做登录成功的操作 记录个人信息 跳转主页等}@Overridepublic void LoginFail(String errMsg) {//提示用户错误信息 toast或者dialog形式}}
BasePresenter是对Presenter的封装:
import java.lang.ref.WeakReference;public class BasePresenter<View> {private WeakReference<View> mViewWeakReference;public BasePresenter(View view) {mViewWeakReference = new WeakReference<>(view);}public void detach() {if (mViewWeakReference != null) {mViewWeakReference.clear();mViewWeakReference = null;}}public View getView() {return mViewWeakReference == null ? null : mViewWeakReference.get();}}
Android MVP架构简析相关推荐
- Qualcomm Android camera 架构简析及如何debug
一. Camera模组(CCM)介绍: CCM一般包含四大件: 镜头(lens).传感器(sensor).软板(FPC).图像处理芯片(DSP): Camera的成像原理可以简单概括如下: 1 ...
- Android Vold 架构简析
这篇文章中主要是分析一下,android系统里面的Vold--Vold是andorid系统的设备管理器,扮演着linux里面的udev的角色.它通过监听uevent的端口,取得 uevent事件,di ...
- android架构+vold,Android Vold 架构简析
李力琼(joni.kartorz.lee@gmail.com)软件工程师,热爱并致力于Linux平台的开源软件的开发,你可以用email与他联系.本文中Andorid系统的版本为4.3及以上. --- ...
- [Android] Android MVP 架构下 最简单的 代码实现
Android MVP 架构下 最简单的 代码实现 首先看图: 上图是MVP,下图是MVC MVP和MVC的区别,在于以前的View层不仅要和model层交互,还要和controller层交互.而 ...
- Android MVP架构从入门到精通-真枪实弹
Android MVP架构从入门到精通-真枪实弹 一. 前言 二. MVC架构 1. MVC架构优缺点 A. 缺点 B. 优点 三. MVP架构 1. MVP架构优缺点 A. 缺点 B. 优点 四. ...
- Android Telephony框架结构简析
Android Telephony涉及的框架结构如图1所示. 图1 Android Telephony框架结构 通过图1可以发现Android Telephony框架结构的一些规律,具体如下. An ...
- 谈谈 Android MVP 架构 | 掘金技术征文
前言:本文所写的是博主的个人见解,如有错误或者不恰当之处,欢迎私信博主,加以改正!原文链接,demo链接 MVP 架构简介 说起 MVP 架构,相信很多朋友都看过,网上也有很多这方面的资料.博主使用 ...
- android mvp框架基类,Android MVP架构项目搭建封装,基类封装
综述 对于MVP (Model View Presenter)架构是从著名的MVC(Model View Controller)架构演变而来的.而对于Android应用的开发中本身可视为一种MVC架构 ...
- Android 启动过程简析
首先我们先来看android构架图: android系统是构建在linux系统上面的. 所以android设备启动经历3个过程. Boot Loader,Linux Kernel & Andr ...
- Android MVP架构模式
目录 概述 实例 Model View Presenter 后记 全部代码 Model View Presenter 概述 MVP模式是Android常见的的一种架构模式,全称是Model.View. ...
最新文章
- mysql 数据类型 int_MySQL数据类型 int(M) 表示什么意思?
- win10中的ubuntu子系统忘记root密码如何修改
- .net mvc 超过了最大请求长度 限制文件上传大小
- powerpoint预览_如何安排PowerPoint幻灯片的时间以进行更有效的演示
- flume 写入文件服务器,Flume环境配置以及基本操作
- 报表传值,主表隐藏id样式设置
- 1001	Hello,World!
- 音视频直播推流和拉流到底是什么意思?
- java rxtx version_RXTX Version mismatch
- STM32高速脉冲发波方案
- Microsoft Visual C++ Build Tools下载/解决Visual C++ 14.0 is required问题
- MySql in子句 效率低下优化
- signature=cc8d613f503e9b933c233da06afc0fc6,襄阳市公安局交通警察支队违法车辆信息公告20210118...
- win7如何修复wmi服务器,WMI服务是什么?Win7系统禁用WMI服务的方法
- java-贪吃蛇小游戏
- 瑞利 随机 matlab,matlab产生瑞利分布随机信号
- node服务端生成七牛token
- 2017年全国研究生电子设计大赛上海赛区感触
- 紫光武汉新芯珠联璧合 引领存储“芯”篇章
- oracle显示人民币,请问如何讲数字转变为大写人民币格式