android——mvp使用以及简单封装

本文介绍了Android中MVP模式的使用,强调了其将逻辑层与视图层分离的优势,以及通过接口实现Presenter与View交互的特点。作者分享了一个简单的MVP应用案例,涉及到Model层的网络请求逻辑、Presenter层的业务处理以及View层的接口回调。通过实例演示了如何在MVP架构下实现倒计时功能,并提出将通用操作如倒计时、加载状态放入基类View中以提高代码复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MVP使用以及简单封装

MVP具体封装见博客高级MVP架构封装演变全过程

Demo地址:https://github.com/wtt123/MvpDemo

最近在项目中使用了mvp模式,在此做一个学习总结:

MVP的认识:

  1. 首先熟悉mvc与mvp的最清晰明了的区别 MVC中是允许Model和View进行交互的,而MVP中很明显,Model与View之间的交互由Presenter完成。还有一点就是Presenter与View之间的交互是通过接口的。
  2. MVP模式的优点MVP中将逻辑层与view层分离开,结构清晰,代码也易读易懂,model层负责数据的请求和数据的处理,写好presenter和view后,基本不用改,只需要关注model的变化就可以,另外一个好处是activity内部类的使用基本上已经很少了,部分ui逻辑判断也可以转到presenter去处理,ui层也非常清晰干净。
  3. MVP的缺点:产生比较多的类

MVP的实例应用:

 

(大概的架构就是如上图)

 

架构解释

 

  1. model层里我主要封装了网络请求的逻辑
  2. presenter里我主要处理了相对应activity层的逻辑(比如点击按钮请求网络,成功/失败后通过在view层写的相对应的接口类把方法回调给activity)
  3. view里主要放回调接口,presenter与activity(ui层通讯),通过暴露出来的接口回调,在presenter里使用view里的方法传一些东西给activity,然后我ui上执行操作改变等

代码分析

Demo现在做一个简单的操作,来熟悉练习MVP,页面显示倒计时,点击按钮请求网络,因为之前写的一个项目中每个页面都需要倒计时,所以做个案例的时候,我把倒计时和loading的显示和隐藏放在了父接口BaseMvpView中,所有的所有mvpView都要继承父类,这样写的话减少每个接口方法都写同种方法

 

 

  •  写一个基类MvpView,里面放每个activity中都将用到的方法
/**
 * 所有mvpView的父接口
 * 里面写的方法基本上每个activity都要用的
 */

public interface BaseMvpView {
    Activity getActivity();

    void toTime(int millisUntil, CountDownTimer timer);

    //loading隐藏
    void hideLoading();

    //loading显示
    void showLoading();

}
  • 对应acticty写自己的mvpview(继承父view),暴露出自己要的东西,我这边把网络请求后的结果回调给我的activity
/**
 * Created by wangting on 2018/2/24.
 * MainActivity对于要实现的接口
 */

public interface MainView extends BaseMvpView{
    void toMainActivity(Object data);
}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值