阶段一:通过网络请求,获得并解析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中的字典和数组 ...
随机推荐
- 【腾讯Bugly干货分享】React Native项目实战总结
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/577e16a7640ad7b4682c64a7 “8小时内拼工作,8小时外拼成长 ...
- Spring8:一些常用的Spring Bean扩展接口
前言 Spring是一款非常强大的框架,可以说是几乎所有的企业级Java项目使用了Spring,而Bean又是Spring框架的核心. Spring框架运用了非常多的设计模式,从整体上看,它的设计严格 ...
- ASP.NET MVC Model验证(三)
ASP.NET MVC Model验证(三) 前言 上篇中说到在MVC框架中默认的Model验证是在哪里验证的,还讲到DefaultModelBinder类型的内部执行的示意图,让大家可以看到默认的M ...
- AngularJs之四
一,数据循环:特别要注意作用域 使用ng-repeat指令. <div ng-app="myApp" ng-controller="myCtrl"> ...
- String... 用法
今天看到一个没见过的函数参数列表test(int... a),查看资料,原来是如下用法:类型后面三个点(String...),是从Java 5开始,Java语言对方法参数支持一种新写法,叫可变长度参数 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(27)-权限管理系统-分配用户给角色
系列目录 分配用户给角色,跟分配角色给用户操作是基本一致的. 打开模块维护,展开SysRole模块添加一个操作码,并赋予权限 设置好之后将权限授权给管理员,在SysRole的index添加操作码与js ...
- Android自定义控件之自定义属性
前言: 上篇介绍了自定义控件的基本要求以及绘制的基本原理,本篇文章主要介绍如何给自定义控件自定义一些属性.本篇文章将继续以上篇文章自定义圆形百分比为例进行讲解.有关原理知识请参考Android自定义控 ...
- web api添加拦截器
实现思路 1.标识控制器有拦截特性: 2.控制器拦截处理: 代码实现 1.标识控制器有拦截特性,代码: [MyFilter] public string PostFindUser([FromBody] ...
- Grunt学习使用
原文地址:Grunt学习使用必看 grunt简介神马的不多说,到处一大堆. 我只说说我已经实现了的代码. 按照官方的教程 相信已经配置好了,接下来说 package.json 和 Gruntfile. ...
- 想着模仿京东微信首页呢,banner滚动搞定了,写到了一半了
接着上篇 微信小程序-阅读小程序demo写:http://www.cnblogs.com/muyixiaoguang/p/5917986.html 想着模仿京东首页呢,结果也没赶得及写完,轮播图让我搞 ...