Android应用架构之MVP--->天气实例
我们知道。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--->天气实例的更多相关文章
- Android APP架构设计——MVP的使用示例
0. 前言 为了更好地进行移动端架构设计,我们最常用的就是MVC.MVP和MVVM,作为三个最耳熟能详的三大架构,应用可谓非常广泛.对于这三种架构设计以及优缺点已经在Android APP架构设计-- ...
- 转:Android开发中的MVP架构(最后链接资源不错)
Android开发中的MVP架构 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解MVP和DDD,但是我们的新项目还是决定通过MVP来构建. 这篇文章是我通过研究和 ...
- Android应用架构
Android开发生态圈的节奏非常之快.每周都会有新的工具诞生,类库的更新,博客的发表以及技术探讨.如果你外出度假一个月,当你回来的时候可能已经发布了新版本的Support Library或者Play ...
- 【译】Android应用架构
Android开发生态圈的节奏非常之快.每周都会有新的工具诞生,类库的更新,博客的发表以及技术探讨.如果你外出度假一个月,当你回来的时候可能已经发布了新版本的Support Library或者Play ...
- 改造 Android 官方架构组件 ViewModel
前言 Android 官方架构组件在今年 5 月份 Google I/O 大会上被公布, 直到 11 月份一直都是测试版, 由于工作比较繁忙, 期间我只是看过类似的文章, 但没有在实际项目中使用过, ...
- Android系统架构说明介绍
Android系统架构说明介绍 Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高层到低层分别是应用程序层.应用程序框 ...
- 转载: android 学习架构
http://www.cnblogs.com/forlina/archive/2011/06/29/2093332.html 引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWor ...
- Android MVPR 架构模式
最近我在尝试让 Google 的 IO App 变得可单元测试,我这样做的其中一个原因是验证 Freeman 和 Pryce 在引用中对单元测试的总结.即使现在我还是没有把 IOSched 中的任何一 ...
- 转:微信Android客户端架构演进之路
转自: http://www.infoq.com/cn/articles/wechat-android-app-architecture 微信Android客户端架构演进之路 作者 赵原 发布于 20 ...
- Qualcomm Android display架构分析
Android display架构分析(一) http://blog.csdn.net/BonderWu/archive/2010/08/12/5805961.aspx http://hi.baidu ...
随机推荐
- 拓扑排序【p1137】 旅行计划
Description 小明要去一个国家旅游.这个国家有\(N\)个城市,编号为\(1\)至\(N\),并且有\(M\)条道路连接着,小明准备从其中一个城市出发,并只往东走到城市\(i\)停止. 所以 ...
- 使用Bundle在Activity间传递数据
使用Bundle在Activity间传递数据 源Activity public class SourceActivty extends Activity { private Intent intent ...
- [bug]The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
写在前面 在模拟请求的时候,如果url为https的,会报这个错误.大概错误就是:基础连接已关闭:无法建立信任关系的SSL / TLS的安全通道. The underlying connection ...
- [Bug] 未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets”
This is very easy to do. Open your build definition and go to the "Process" page. Then und ...
- 使用React开发
阅读目录 React的组件生命周期 JSX 语法 父组件传向子组件 子组件传向父(爷)组件 getDefaultProps && getInitialState 获取真实的DOM节点 ...
- Android Linux内核编译
平台: Wind7_64 + Ubuntu12_04_64 + VMware 这里以Android5.0为例: Android5.0 可以到这里下载:115网盘礼包码:5lbd7crtk1wzhttp ...
- [转]C++函数模板与模板函数
1.函数模板的声明和模板函数的生成 1.1函数模板的声明 函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计.它的最大特点是把函数使用的数据类型作为参数. ...
- JavaScript的filter用法
Js的有些操作会改变原来的对象:有些操作则不会改变原来对象. 数组的filter方法就不会改变原来数组 利用filter,可以巧妙地去除Array的重复元素: 'use strict'; var r, ...
- flask控制上传文件的大小
1.flask控制上传文件的大小的方案是全局控制:http://docs.jinkan.org/docs/flask/patterns/fileuploads.html from flask impo ...
- zabbix自定义监控项二
为zabbix增加支持传参的自定义监控项 例如使用zabbix来监控tcp的12种状态 tcp的12种状态可以通过man netstat来找到,即 LISTEN:等待从任何远端TCP 和端口的连接请求 ...