阶段一:通过网络请求,获得并解析JSON数据(天气应用)
“阶段一”是指我第一次系统地学习Android开发。这主要是对我的学习过程作个记录。
在上一篇阶段一:解析JSON中提到,最近在写一个很简单的天气预报应用。即使功能很简单,但我还是想把它做成一个相对完整的应用。这样的话,像以前想到什么就做什么,显然是不行的,很容易就乱了。所以我就琢磨了一下,弄个什么,让自己的思路变得更加清晰,仅此而已。
经过一些思考和总结之后,我觉得可以是这么一个流程:
第一步:想好这个应用要实现什么功能,并罗列出来,然后就开始写代码,实现这些功能
说明:(1)对于这个模型的具体实现步骤,不必写出来,但要了然于心。在第二步优化的时候,就可以根据这个模型看看那部分可以优化。
(2)在做这一步时,不要太在意UI,只要实现所需的控件和基本样式就可以了。
这一步完成之后,带有核心功能的应用就出来了。
第二步:优化
这里的优化分两部分,“主要”指的是应用本身所要实现的功能和其UI界面,“其它”指的是所有应用都有的,都应该注意的,是共性问题,例如文字、图片、间距等怎样适配各种手机屏幕,设备旋转对页面产生的影响,记录页面状态,用户和系统的操作对应用的生命周期产生的影响等。相信还有更多的地方需要思考,留意。只是我现在只能想到这些。另外,随着深入地学习和不断地练习,应该会有很多地方,在第一步时已经注意到并完善了。
这一步完成之后,应用就相对完整了。
接下来,就以我的情况来做分析:
一、基本模型
而这里,我的概括说明是:
(1)在EditText上输入城市名,单击“确认”按钮后;
(2)调用自定义类的方法,把EditText的内容转为拼音;
(3)将API地址和城市名拼音拼接,传给AsyncTask的自定义子类,在其doInBackground方法中实现“发送请求、获取网络数据、解析并存储所需数据”的功能,在其onPostExecute方法中实现“显示数据”的功能;
(4)用Handler设置每过5分钟,就执行一次(3)的操作,来达到“自动刷新”的效果;
(5)单击“刷新”按钮,也是重复(3)的操作,来完成“主动刷新”的功能;
这不是详细说明,而是概括的,因为我也尝试过这样写,但真的写不下去,没写多少我就感到要吐了,真的很繁琐,所以这里只是简单地做个例子。
另外,由于这个接口是免费的,所以国内的城市只能换成拼音发送,国外的城市没访问过。还有关于自动定位的,我原打算是自动获取手机当前的经、纬度,然后再传到API获取其地址。而百度地图也有这个免费的API服务,但我在申请密钥时遇到点麻烦,没弄成,而且关于定位这块还是比较不理解。所以这部分先搁置。
有了清晰的思路和规划之后,就可以开始写代码了:
这里我没有贴出完整的代码,只把核心部分贴出来。
后台处理网络请求和解析数据
输入城市名、启动自动刷新和主动刷新功能
结果是这样子的:
阶段一:通过网络请求,获得并解析JSON数据(天气应用)的更多相关文章
- andlua,andlua发送http请求,并解析json数据
andlua发送http请求,并解析json实例 import'cjson'import 'http'--导入cjson库url = 'https://www.baidu,com'--设置urlHtt ...
- Retrofit网络请求库应用02——json解析
PS:上一篇写了Retrofit网络请求库的简单使用,仅仅是获取百度的源码,来证明连接成功,这篇讲解如何解析JSON数据,该框架不再是我们之前自己写的那样用JsonArray等来解析,这些东西,我们都 ...
- 使用Charles进行网络请求抓包解析
使用Charles进行网络请求抓包解析 0. 懒人的福音(⌐■_■)(破解版下载地址,记得安装java库支持) http://pan.baidu.com/s/1c08ksMW 1. 查看电脑的ip地址 ...
- Android网络之数据解析----使用Google Gson解析Json数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 使用jQuery解析JSON数据(由ajax发送请求到php文件处理数据返回json数据,然后解析json写入html中呈现)
在上一篇的Struts2之ajax初析中,我们得到了comments对象的JSON数据,在本篇中,我们将使用jQuery进行数据解析. 我们先以解析上例中的comments对象的JSON数据为例,然后 ...
- iOS多线程与网络开发之解析json数据
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. // 同步发送信息 2 NSData *data = [NSURLConnection sendSynchronousRequest:request r ...
- autojs,autojs 发送http请求,autojs 解析json数据
如题,我这个就直接上代码吧 (function () { let request = http.request; // 覆盖http关键函数request,其他http返回最终会调用这个函数 http ...
- iapp,iapp http请求,iapp解析json数据
iapp发送http请求,并解析json数据 //http操作 t() { s a = "http://wap.baidu.com/" //目标url hs(a, null, nu ...
- C# 解析json数据出现---锘縖
解析json数据的时候出现 - 锘縖,不知道是不是乱码,反正我是不认识这俩字.后来发现是json的 '[' 字符转换的 网上搜了一下,说的是字符集不匹配,把字符集改为GB2312. 一.贴下处理jso ...
- IOS 解析Json数据(NSJSONSerialization)
● 什么是JSON ● JSON是一种轻量级的数据格式,一般用于数据交互 ● 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除 外) ● JSON的格式很像OC中的字典和数组 ...
随机推荐
- UML类图(下):关联、聚合、组合、依赖
前言 上一篇文章UML类图(上):类.继承.实现,讲了UML类图中类.继承.实现三种关系及其在UML类图中的画法,本文将接着上文的内容,继续讲讲对象之间的其他几种关系,主要就是关联.聚合.组合.依赖, ...
- 在 Ubuntu 14.10 中借用 Windows 的字体
在前一篇随笔中,我详细讨论了字体的分类及用途,也以 Fedora 20 为例,展示了字体配置的思路和方法.我在配置 Fedora 20 系统字体的时候,采用的是一种釜底抽薪的方法,完全抛开了系统原有的 ...
- 前端自学路线之js篇
上一篇我们讲了前端切图的学习路线,不知大家有没有收获.今天来聊聊前端工程师的核心技能之——JavaScript.js这门语言看似简单,但要做到入门.熟练以至于架构的程度,还是有一段路要走的,今天就来聊 ...
- VR ( Virtual Reality )、AR(Augmented Reality)、MR(Mix Reality)和CR(Cinematic Reality)是什么鬼?
整个社会对虚拟现实的研究和开发源于上个世纪六十年代,计算机图形学.人机接口技术.图像处理与模式识别.多传感技术.语音处理与音响技术.高性能计算机系统.人工智能等领域在之后半个世纪取得了长足的发展为虚拟 ...
- Atitit java onvif 开源类库 getProfiles getStreamUri
Atitit java onvif 开源类库 getProfiles getStreamUri 1. ONVIF Java Library by Milgo1 1.1. https://github. ...
- ASP.NET OAuth:解决refresh token无法刷新access token的问题
最近同事用iOS App调用Open API时遇到一个问题:在access token过期后,用refresh token刷新access token时,服务器响应"invalid_gran ...
- 版本控制工具比较-CVS,SVN,GIT
首先介绍几个版本控制软件相互比较的重要依据: a.版本库模型(Repository model):描述了多个源码版本库副本间的关系,有客户端/服务器和分布式两种模式.在客户端/服务器模式下,每一用户通 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(62)-EF链接串加密
系列目录 前言: 这一节提供一个简单的功能,这个功能看似简单,找了一下没找到EF链接数据库串的加密帮助文档,只能自己写了,这样也更加符合自己的加密要求 有时候我们发布程序为了避免程序外的SQL链接串明 ...
- 基于.NET平台常用的框架整理(转)
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的 学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到, ...
- vim 编辑器简单使用总结
http://blog.csdn.net/sharp_allen/article/details/27075133转载 说了这么多,其实还少一个和word,记事本一样的编辑器,在各个操作系统都有编辑器 ...