前言
最近在学习Android高级开发,除了加强UI、四大组件等的使用技巧外,更多的是学习android项目结构的设计,例如常见的MVC
,MVP
以及最近才了解到的MVVM
等。本次项目就是在采用MVP
结构,同时结合环境云实现查询全国主要城市的天气预报信息,也是非常简单、实用的一个小Demo。
环境云简介:环境云环境大数据服务平台通过获取权威数据源(中国气象网、中央气象台、国家环保部数据中心、美国全球地震信息中心等等)所发布的各类环境数据,以及云创自主布建的各类全国性环境监控传感器网络(包括PM2.5,各类空气质量指标,土壤环境质量指标检测网络)所采集的数据,并结合相关数据预测模型生成的预报数据,依托数据托管服务平台万物云(www.wanwuyun.com)所提供的基础存储服务,推出一系列功能丰富的、便捷易用的基于RESTful架构的综合环境数据调用接口。配合代码示例和详尽的接口使用说明,向各种应用的开发者免费提供可靠丰富的气象、环境、灾害以及地理数据服务。。
MVP简介
相信大家对MVC都是比较熟悉了:M-Model-模型、V-View-视图、C-Controller-控制器,MVP作为MVC的演化版本,也是作为用户界面(用户层)的实现模式,那么类似的MVP所对应的意义:M-Model-模型、V-View-视图、P-Presenter-表示器。从MVC和MVP两者结合来看,Controlller/Presenter在MVC/MVP中都起着逻辑控制处理的角色,起着控制各业务流程的作用。而MVP与MVC最不同的一点是M与V是不直接关联的也是就Model与View不存在直接关系,这两者之间间隔着的是Presenter层,其负责调控View与Model之间的间接交互,MVP的结构图如下所示,对于这个图理解即可而不必限于其中的条条框框,毕竟在不同的场景下多少会有些出入的。在Android中很重要的一点就是对UI的操作基本上需要异步进行也就是在MainThread中才能操作UI,所以对View与Model的切断分离是合理的。此外Presenter与View、Model的交互使用接口定义交互操作可以进一步达到松耦合也可以通过接口更加方便地进行单元测试。
![]()
以上内容引自Android中的MVP
MVP的优点:
- 在MVP中,Presenter可以用于多个视图,但在MVC中的Activity就不行
- 模型与视图完全分离,我们可以修改视图而不影响模型
- 可以更高效的使用模型,因为所有的交互都发生在一个地方——Presenter
- 如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑单元
准备工作
一、注册环境云
1、打开浏览器输入http://www.envicloud.cn/pages/register.html ,进入环境云登录页面;
2、注册完成后,将会在您注册时使用的邮箱中收到激活邮件,请按提示点击激活链接;
3、登录环境云,点击安全管理的安全凭证标签页,获取您的用户私钥。
二、搭建项目环境
1、新建Android 工程:打开Android Studio建立一个android项目,其中详细细节我就不再讲述了,不会的大家可以百度一下,你就知道。我的项目名为WeatherDemo
。
2、组织包结构:详细结构如下图所示
3、导入所需jar包:
- gson.jar
- volley.jar
三、设计业务逻辑
本项目非常的简单,只有一个实体类,那就是Weather类,所以所有的业务逻辑都是围绕Weather类展开的。用一张图就可以非常完美的展示我们项目的流程: