我们知道。Android App 本质上抽象成两个层次:视图和数据。为了App在发展过程中高速的适应变化,方便维护和高速迭代,我们要将数据和视图解耦,而在解藕方面我们的前辈们在漫长的软件开发经验中为我们提供了两套流行的指导框架:MVC和MVP,当中MVP近年来在Android应用开发上逐渐流行。近期在开发群里有小伙伴也问道了这个问题,本章我将结合详细样例依据自己的理解用MVP进行实现。

先看下最后的效果:

最后的效果非常easy吧,那么我们就来梳理一下整个思路:

MVP流程。大概能够分成四步:

1.UI引用Presenter来实现View的方法;

2.Presenter调用Model,走Model里边的逻辑;

3.Model详细逻辑实现,而且回调Presenter;

4.Presenter回调View,即回到UI,回调View方法

gradle文件

compile 'com.loopj.android:android-async-http:1.4.9'
compile 'com.google.code.gson:gson:2.3.1'

说明:1.网络请求使用了async-http;

2.json解析使用的gson。

3.本实例数据来源于聚合数据:https://www.juhe.cn/ 有须要的可自取。

其它也没什么了,直接上图应该会非常清晰:

1.项目结构:

2.MVP之M

CityResultModelBean.java
本实例的bean比較复杂,字段较多。主要是依据聚合接口返回的response而定的,能够忽略,纯bean。无他。

CityWeatherModel.java
详细业务的处理,此处就是数据的获取,检索和解析等操作。

3.MVP之V

WeatherView.java
处理业务须要哪些方法;

MainActivity.java
仅仅关心本层的数据和ui展示;

3.MVP之P:

WeatherPresenter.java 是model和view的连接桥梁。从model检索到数据之后返回给view进行展示。



小结:



MVC模式

视图(View):用户界面。

控制器(Controller):业务逻辑

模型(Model):数据保存

View 传送指令到 Controller

Controller 完毕业务逻辑后,要求 Model 改变状态

Model 将新的数据发送到 View,用户得到反馈

在传统的mvc模式中,可能activity和fragment很多其它扮演了view和controller的双重身份,数据和视图的耦合程度较高。

MVP模式

在MVP中,Activity和Fragment扮演View层,Presenter相当于MVC模式中Controller层,处理业务逻辑。

一般一个Activity都有一个对应的presenter通过model来处理数据。

最后,推荐一个公众号 anything_android

包含但不局限于android前沿火热技术快送,干货分享,职场焦点,IT、数码3C业界头条咨询,当然偶尔也会有段子和鸡汤。

Android应用架构之MVP--->天气实例的更多相关文章

  1. Android APP架构设计——MVP的使用示例

    0. 前言 为了更好地进行移动端架构设计,我们最常用的就是MVC.MVP和MVVM,作为三个最耳熟能详的三大架构,应用可谓非常广泛.对于这三种架构设计以及优缺点已经在Android APP架构设计-- ...

  2. 转:Android开发中的MVP架构(最后链接资源不错)

    Android开发中的MVP架构 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解MVP和DDD,但是我们的新项目还是决定通过MVP来构建. 这篇文章是我通过研究和 ...

  3. Android应用架构

    Android开发生态圈的节奏非常之快.每周都会有新的工具诞生,类库的更新,博客的发表以及技术探讨.如果你外出度假一个月,当你回来的时候可能已经发布了新版本的Support Library或者Play ...

  4. 【译】Android应用架构

    Android开发生态圈的节奏非常之快.每周都会有新的工具诞生,类库的更新,博客的发表以及技术探讨.如果你外出度假一个月,当你回来的时候可能已经发布了新版本的Support Library或者Play ...

  5. 改造 Android 官方架构组件 ViewModel

    前言 Android 官方架构组件在今年 5 月份 Google I/O 大会上被公布, 直到 11 月份一直都是测试版, 由于工作比较繁忙, 期间我只是看过类似的文章, 但没有在实际项目中使用过, ...

  6. Android系统架构说明介绍

    Android系统架构说明介绍 Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高层到低层分别是应用程序层.应用程序框 ...

  7. 转载: android 学习架构

    http://www.cnblogs.com/forlina/archive/2011/06/29/2093332.html 引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWor ...

  8. Android MVPR 架构模式

    最近我在尝试让 Google 的 IO App 变得可单元测试,我这样做的其中一个原因是验证 Freeman 和 Pryce 在引用中对单元测试的总结.即使现在我还是没有把 IOSched 中的任何一 ...

  9. 转:微信Android客户端架构演进之路

    转自: http://www.infoq.com/cn/articles/wechat-android-app-architecture 微信Android客户端架构演进之路 作者 赵原 发布于 20 ...

  10. Qualcomm Android display架构分析

    Android display架构分析(一) http://blog.csdn.net/BonderWu/archive/2010/08/12/5805961.aspx http://hi.baidu ...

随机推荐

  1. Java android DES+Base64加密解密

    服务器与客户端加密解密传输, 中间遇到各种坑,客户端无论用AES还是DES解密时都会出现错误,后来才看到好多人说要用AES/DES加完密后还要BASE64加密,照做时发现android和java的Ba ...

  2. jquery 为表单动态添加元素

    $('<input />').attr('type','hidden')            .attr('name','type')            .attr('value', ...

  3. 十. 图形界面(GUI)设计3.标签、按钮和按钮事件

    标签和按钮也许是图形界面中最常见的两种组件,按钮又总是与激发动作事件有关. 标签 标签(JLabel)是最简单的Swing组件.标签对象的作用是对位于其后的界面组件作说明.可以设置标签的属性,即前景色 ...

  4. 关于UIWebView设置高度自适应的问题

    - (void)viewDidLoad { [super viewDidLoad]; _scrollView = [[UIScrollView alloc]initWithFrame:CGRectMa ...

  5. .Net中的不可变集合(Immutable Collection)简介

    今天发现MS在Nuget上发布了一个Immutable Collection的程序集,提供了对不可变对象的集合的支持. 简单的看了一下,貌似支持的还比较全: ImmutableArray<T&g ...

  6. Word交叉引用

    第一种:参考文献,用NE插入. 第二种:交叉引用. 先定义新的编号格式[1](主要解决参考文献格式自动编号的问题),感觉但是没有解决缩进的问题,需要Tab. 但是实验发现,通过谷歌学术引用的参考文献插 ...

  7. pr_debug、dev_dbg等动态调试二

    内核版本:Linux-3.14 作者:彭东林 邮箱:pengdonglin137@163.com 下面我们简要分析 1: echo -n "file demo.c +p" > ...

  8. A folder failed to be renamed or moved--安装Android SDK的问题

    对于Android是一直想学却一直未学,行动跟不上想法.现在,终于付诸于行动了. 首先,我找的第一个Android的资料是大话企业级Android,前阵子刚看完大话设计模式,通俗易懂,还是比较喜欢这一 ...

  9. http://www.cnblogs.com/hoojo/archive/2011/06/08/2075201.html

    http://www.cnblogs.com/hoojo/archive/2011/06/08/2075201.html

  10. 【iOS开发-55】图片轮播案例:scrollView的分页、滚动栏、利用代理控制定时器和Page Control以及多线程问题

    案例: (1)用storyboard布局,这里用了三样东西. --UIScrollView就是我们准备存放滚动图片的容器. --Page Control就是控制页数的那几个小点点.能够设置有多少个点. ...