基于安卓系统天气预报应用程序开发本科毕业论文.doc

上传人:laozhun 文档编号:4022589 上传时间:2023-04-01 格式:DOC 页数:38 大小:8.99MB
返回 下载 相关 举报
基于安卓系统天气预报应用程序开发本科毕业论文.doc_第1页
第1页 / 共38页
基于安卓系统天气预报应用程序开发本科毕业论文.doc_第2页
第2页 / 共38页
基于安卓系统天气预报应用程序开发本科毕业论文.doc_第3页
第3页 / 共38页
基于安卓系统天气预报应用程序开发本科毕业论文.doc_第4页
第4页 / 共38页
基于安卓系统天气预报应用程序开发本科毕业论文.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《基于安卓系统天气预报应用程序开发本科毕业论文.doc》由会员分享,可在线阅读,更多相关《基于安卓系统天气预报应用程序开发本科毕业论文.doc(38页珍藏版)》请在三一办公上搜索。

1、基于安卓操作系统的天气预报应用程序开发摘要 安卓操作系统的出现,使得在智能手机时代中,其成为了最受欢迎的应用平台之一。每天几十万部安卓手机的激活量等迹象表明,安卓的未来的发展方向和产业结构必定成为一些相关的公司战略发展的焦点。作为在安卓手机上运行的应用程序,也是在不断的快速发展,达到了日新月异的辉煌局面。为了来不断的扩充手机的功能,使用者可以通过自主选择安装各种所需要的应用软件,再连接网络,这样就可以扩充手机功能。通过充分的利用手机本身的软硬件资源,当用户连接网络时,就可以轻松地访问到网络上的各种资源,获取各种有用的信息。关键字:智能手机,安卓,操作系统,应用程序THE DEVELOPMENT

2、 OF WEATHER FORECAST APPLICATION BASED ON THE ANDROID OPERATING SYSTEMABSTRACTWhen android operating system has become true, Android is becoming one of most popular application platform in all over the world . Every day hundreds of thousands of android are activated what indicates that the future de

3、velopment pattern will undoubtedly become the focus of the object and of the related industries are following.Applications ,which is run on the android OS are developing rapidly and has reached the changing situation.Users can install all kinds of application software which are needed and connect th

4、e Internet , in order to continuously expand the function of mobile phone. By using the phone itself and network hardware and software resources as much as possible , and connect to the Internet , users can access to all kinds of resources on the network easily and get all sorts of useful informatio

5、n.KEYWORDS:Android , operating system , smartphone, application目录摘要IABSTRACTII1 前言11.1 安卓操作系统简介以及发展11.2 应用程序介绍和发展21.3 应用程序开发现状31.4 项目开发意义42 项目需求分析42.1 功能分析42.2 性能分析52.3 安全分析52.4 研究内容和开发环境需求63 项目设计分析63.1 程序功能模块图63.2显示信息设计73.3 解析数据73.4界面设计73.4.1程序启动界面83.4.2信息界面之主界面(MainPage)83.4.3信息界面之二(NextPage)93.4.

6、4信息界面之三(PreviousPage)93.4.5查询界面93.5 算法流程图104 项目实现134.1 启动画面134.2信息界面显示实现154.2.1 Weather154.2.2 NextPage184.2.3 PreviousPage194.3天气查询194.4 GetWeatherService204.5下拉刷新215 项目调试和效果分析235.1项目调试分析235.2 效果图26总结33参考文献34谢辞351 前言1.1 安卓操作系统简介以及发展一个基于Linux内核的,现在流行的主流的手机系统之一 安卓操作系统。Google公司早在2007年11月5日就公布的这款操作系统,安

7、卓系统是一款手机系统。目前有很多的手机采用这款安卓系统。除此之外,手机系统还有,苹果的IOS系统、微软的wm系统、诺基亚的塞班系统、HTC的黑莓系统等。类似于电脑的window7和window8系统等,这款系统常用在除了苹果手机外的绝大数智能手机上,属于智能操作系统。安卓最新版本为Android4.4.2 KitKat。它是第一个为移动终端设计的开放的系统程序。从android的意思为机器人就可看出,其有一定的智能化。安卓是以Java语言为基本的编程语言,从操作系统,到用户界面和应用软件,从接口到功能,都有着和大的变化。Android主要有四大组件,包括Activity,Service,Bro

8、adcast和Content Provider。其中Activity,个人认为是一个容器,里面存放了要在界面上显示的各个控件,当然还有包括实现这些控件的代码。我们可以通过Activity类负责创建用于人机交互的视图,安卓中分为两种模式,一种是前景模式,另一种是背景模式分别对应的是Activity和Service。它们如果是属于一个进程内的,那么将会通过binder来进行通信,如果是属于两进程内的,那么将会通过AIDL来进行远程通信。当然在这里就会牵涉到界面设计,安卓开发程序员可以通过XML文件来配置,也通过直接在这个文件中设置数据,将结果显示给用户。安卓现在有很大的发展优势,同样是手机的只能操

9、作系统,安卓比奄奄一息的塞班更为华丽,相比较wm和黑莓操作系统,安卓在第三方软件方面更加丰富。随着时间的推移和科技的进步,全球范围内唯一能和苹果IOS分庭抗礼的操作系统也只有安卓操作系统了。由于安卓是采用Java语言来开发的,这又给了大量Java程序员提供了便利,这也给安卓开发了带了很大的生机。谷歌公司从2009年开始发布了很多个版本,基本上都是以糖果命名的,从Android1.6 Donut 版本,直到现在的Android4.4 Katit。主要的参数有:CPU 和电脑一样,主要负责处理数据,现在安卓的手机基本上都上了四核,但是并不意味着核心数越大越好,CPU的架构和主频对性能影响也很大。G

10、PU 就是相当于电脑的显卡,当用户玩游戏时,或者要求手机的界面很华丽时,就要处理繁重的图形数据,这样,就可以得到一个判断GPU性能的依据是多边形生成能力和像素渲染能力。RAM 相当于电脑的内存,是手机系统和应用程序的运行内存,其值越大手机的处理能力表现的就会越强。充足的RAM空间,可以确保手机同时打开多个应用软件也能表现出很流畅,基本上不会出现卡机现象。ROM 相当于电脑的硬盘,是用来存储的数据的,毫无疑问,ROM越大越好,你能存放的数据就越多。除此之外,还有一些重要的参数指标如,屏幕、电池容量、SIM卡、摄像头、像素、以及USB接口。1.2 应用程序介绍和发展安卓操作系统的出现,使得在智能手

11、机时代中,其成为了最受欢迎的应用平台之一。每天几十万部安卓手机的激活量等迹象表明,安卓的未来的发展方向和产业结构必定成为一些相关的公司战略发展的焦点。作为在安卓手机上运行的应用程序,也是在不断的快速发展,达到了日新月异的辉煌局面。Android应用程序当中有很多组件,遵守着应用程序清单AndroidManifest ,在此配置文件中,还需要来描述每个组件之间如何进行交互。还包括要求应用程序元数据的硬件平台。安卓有四个主要组件,分别是Activity,是应用程序中的表示层。应用程序的每个界面都是Activity类的子类,Activity用视图(View)构成显示信息,响应操作。第二个是Servi

12、ces,这个组件在后台运行,更新用户需要的可见的数据和显示的Activity,是个默默无闻的“幕后工作者”。除此之外还可以触发通知。在应用程序的Activity不激活或者不可见的时候,可以进行一些用于执行需要长期处理的事情,比如下载等。第三个是ContentPrivider,可以提供数据的共享。这个组件用于管理和共享应用程序数据库。是跨应用程序界限共享数据的优先方式,个人理解是可以进行进程间的数据共享访问。当想把自己程序的数据和别的程序进行互相通信,就可以通过配置自己的消息提供者,这样就可以以允许其他程序来访问它的数据。第四个组件是Broadcaset(广播接收者),个人理解是Intent的消

13、费者,如果在应用程序中创建并注册一个Broadcaset Receiver ,此时应用程序就可以监听匹配了特定标准的广播Intent。广播接收者会启动一个事件来响应这个收到的Intent。图1显示的是安卓系统框架。图1-1 安卓系统框架除了这四大组件之外,Intent功能挺强大的,用途也很广泛。一个应用程序间的消息传递的传送者。利用Intents,能够在系统范围内播送消息,也可以对一个Activity或Serivce发送消息,可以运行一个乃至多个Activity或者Service。系统将会自动辨别出相应的活动目标。安卓应用采用的是java语言,具有丰富的类库,而且逻辑代码与界面设计分离,这也给

14、开发人员带来了强大的便利性,还有最主要的一点是权限控制开放。也可以提供了很多学习的机会。有的安卓应用软件的开发技术不是孤立的,不是只是会java语言就可以的,它需要在掌握Android三层框架同时,也必须融合Java层框架内的通信机制、 通过JNI层来将Java和C/C+联合起来、HAL驱动框架及其API、有的甚至是牵涉到了Linux内核部分。1.3 应用程序开发现状具有独立操作系统(android和ios等)的手机,为了来不断的扩充手机的功能,使用者可以通过自主选择安装各种所需要的应用软件,再连接网络,这样就可以扩充手机功能。通过充分的利用手机本身的软硬件资源,当用户连接网络时,就可以轻松地

15、访问到网络上的各种资源,获取各种有用的信息,以此来提高手机的智能化。而这自然的也就极大的方便了手机用户,应用程序可以给用户带来很多的娱乐时光。用户可以通过只能手机来获取很多有趣、实用的信息,体验智能化带来的有滋有味生活。早在2013年的第三季度,用户通过配置有安卓操作系统的智能手机或者平板电脑下载的应用程序的价值就达到了300多亿美元。无论人们想下载什么程序,这些应用程都已经完成了。由于安卓应用程序属于一个较新兴的技术和发展快速的模式,开发安卓应用程序在整个市场经济产业中,仍是一个缺口比较大的一个方面。这就是为安卓应用程序的发展带来了一个蓬勃发展的机会。1.4 项目开发意义 在我们这个时代中,

16、已经步入了一个网络化,信息化程度相当高的时代,科学技术一日千里,飞速发达。随之而来的是社会竞争越来越激烈,如何在这个繁华而又复杂的社会里能永葆生机,提升自己的竞争力,让自己立于不败之地呢。其中一个必要条件是能够及时的获取信息,正确的分析和处理信息,对社会的最新动态有一个适当的掌握和运用,然后才能有确切的目的和目标来获取自己想要的信息和成果。从目前的各种消息渠道来看,最快捷的方式莫过于智能手机,手机没有电脑那么笨重,但是却能极大程度的达到电脑给我们的使用效果。手机凭借着其携带方便,有强大的功能等,给我们的生活娱乐和工作带来了很多便利。选择开发一个基于安卓操作系统的天气预报应用程序能够一定程度的顺

17、应时代的潮流。目下应用程序市场上,也有一些类似于天气预报的应用程序。当然也很大程度上给人们提供了便利,让人们掌握天气资讯,快捷出行,安全出行。2 项目需求分析2.1 功能分析(1)要有良好效果的界面在安卓应用程序开发当中,有一个重要的参考指标是用户界面(UI),一个良好的,人性化的,合理化的交互界面能够给用户“眼前一亮”的感觉,有一个比较绚丽的界面,能一定程度上吸引用户,增加该应用产品的下载量和使用量。(2) 天气信息的查询功能作为一个天气预报的应用程序,天气信息的查询当然是要实现的。在程序中是通过WebService服务,从中国气象局获取所需要的,例如该城市的简单介绍,旅游概况等等。查询的城

18、市的天气信息,实况信息以及未来两天的天气信息。通过一定的解析处理,通过解析获取我们所需的信息,然后交由Activity显示出来。(3) 附加信息在设计时,可以增加定位和网络检查功能。另外,在查询一个城市时,可以查出该城市的一些附加信息。(4) 操作简单任何一款软件,如果他的操作要是繁琐复杂,也失去了原本的定位价值,就无法占据一定的市场份额,从而得不到原有的意义。2.2 性能分析(1)优化Java代码 安卓的应用程序都是用Java开发的,选择算法要比实现算法更加重要。要利用简单的技术比如缓存和减少内存分配来极大的优化应用程序。一个非常重要的性能指标是能够让应用程序随时的保持响应。(2) 提高性能

19、在代码中使用较少的内存,提高运行速度和效率,除此之外还要利用CPU的设计方式,内存分配方式和内存访问,这些都会对内存访问有性能的直接影响。(3) 利用多线程 安卓应用程序使用的是java编程语言,采用多线程编程,这样有一个好处就是可以及时的响应用户,也能提升安卓设备的性能,减少响应的时间。(4) 降低功耗我们在编写应用程序时要注意功耗问题,要确保应用程序使用电量是合理的。现在的智能手机都由有限容量的电池来供电,因此是否能够节能成为了一个重大的性能指标,过于消耗电能的应用程序将会被广大的用户遗弃,要做到在不影响程序性能的情况下最大的减少功耗。2.3 安全分析(1) 安卓的安全设计原则在安卓平台上

20、运行的程序是肯定没有权限,也是不能够执行一些操作来损坏操作系统和其他的应用程序,这是开发安卓应用程序默认的情况。不能对用户的私人信息或数据进行读写更改,不能对其他应用程序所属的文件进行读写,或者其他更改操作。另一个注意的点是,不能对其他正在运行的应用程序进行一定的干扰,安卓的应用程序都是在一个属于自己的空间中运行,我们所开发的应用程序不能对其他应用程序进行一些危害性的操作,除非有特殊的权限,能够请求其他程序进行相关的操作处理,这些权限要在应用程序中呗声明为静态。(在安装时系统会预先提示)(2) 安卓数据安全原则安卓的安全原则指出,默认情况下,除非系统授权外,安卓操作系统的数据是不会被其他的程序

21、破坏,读写,修改或者删除。安卓在保护数据的完整性和安全性方面,采用的是赋予相应的权限,如果有特殊需要的话,系统在安装的过程中就会审核,看该程序有没有相应的权限,这样也就有效的保护了数据的安全性。2.4 研究内容和开发环境需求(1)搭建Android开发环境,下载并安装Eclipse,下载并安装android SDK;并配置好相应的插件ADT、分配一定的运行空间和存储空间来配置Android模拟器。 (2)充分研究android平台应用程序开发的技术的理论,掌握Android框架下开发应用程序的相关技术与流程。(3)开发语言是Java,通过这个应用程序来熟悉多线程编程。(4)如何从远端服务器上获

22、取信息。3 项目设计分析3.1 程序功能模块图根据功能需求分析,在这个项目中总共设计了以下功能:(1)显示功能,可以显示当天的天气状况,明后两天的天气信息,以及该城市的简单介绍。(2)查询功能,作为一个天气预报的应用软件,查询天气是最基本的功能,在这个项目中设计了利用城市名来作为简单的查询方法。(3)定位功能,这个功能的主要作用是在用户打开这个程序时,就会显示用户所在地的天气信息。除此之外,还有一些附加的功能,比如检查网络设置等。(如图2所示)CHENWEATHER显示信息查询定位显示三种信息按照城市名查询获取当前位置信息图3-1 功能模块3.2显示信息设计 在这个项目中主要设计了以下几类信息

23、:(1)日期,分别是今天,明天和后天的日期(例如 5月1日)。(2)天气情况,这中间包括了天气、气温、风力。而且还有明天,和后天的天气情况。(3)各项指数,比如穿衣指数、旅游指数、运动指数、紫外线指数等等。(4)城市介绍,简单的介绍该城市的历史、发展和旅游情况等。3.3 解析数据由于在这个项目中,所用的信息,如定位功能是从手机基站获取的信息,比如天气信息是从WebXml这个网站,而该网站是从中国气象局获得的。在获取天气等信息时采用的是Soap协议,调用接口,直接从预先设置的网站WebXml获取。在获取信息后就要解析数据,并将数据赋给相应的变量。然后在Activity中显示给用户,根据需求,解析

24、了天气信息,明天和后天的天气状况,以及该城市的介绍。然后分别在几个界面中显示。3.4界面设计在这个项目中,设计了几个界面,主要包括有:程序启动时所展示的画面,之后是启动完成后时显示的界面,也就是信息的主界面,其次是用于显示明天和后天天气信息的界面(NextPaga界面),第三个界面是用于显示城市介绍信息(PreviousPage界面)最后一个是查询界面,用户可以在这个界面上输入要查询的城市,然后在信息界面获取天气信息。在界面设置时,要注重界面的友好性,靓丽性和实用性。友好性,是指界面布局简单,操作简易,不会繁琐多余。靓丽性,尽最大的能力将界面设置地更为绚丽,这样也会随之提高应用程序的价值。除此

25、之外,还要注重一点是增加界面的信息量,在有限的空间内将信息合理地,尽可能多的显示出来,让用户阅读信息,这就是实用性。下面分别介绍项目中几个界面设计。3.4.1程序启动界面在程序启动界面中,采用“导航设置”,模仿了市场上一般的应用软件的设计。在开机时会显示一张图片,在程序休眠一至两秒后启动另一个画面,在这个画面中会根据用户的选择,向左或者向右滑动时会显示前一张图片或者是下一张图片,总共会显示四张。在这个过程中,除了显示第一张图片时没有能显示它的前一张图片和在第四张图片时不能显示它的下一张图片,其他的都可以根据选择显示前一张或者下一张图片。在显示第四张图片时,如果继续向左滑动(实际是跳转到下一页的

26、功能)时,会跳转到信息的主界面中。3.4.2信息界面之主界面(MainPage)当进入到这个界面时,可能会停滞一会,因为程序会在启动这个界面时,会进行一些获取信息的操作,然后当信息获取成功后会显示设计的布局中。在这个界面中,会显示有以下信息:地区:查询的城市名,并加一些修饰,如阴影设置,字体大小和颜色的设置,用于和其他信息进行区分。日期:当天的日期,格式为 -月-日。天气:当天的天气情况。天气图片:在天气的有方,显示与当天天气相符的天气图片,如太阳,云朵。气温:格式为当天的最低温度/最高温度,单位是摄氏度。风力:风向和强度大小。指数:有各项指数,包括穿衣指数,过敏指数等等。天气实况:指查询时刻

27、的天气情况,包含有空气质量,以及紫外线强度,湿度,天气,温度。导航按钮:有三个小按钮,其中中间一个是标为蓝色按钮的代表当前页。菜单按钮:用点击这个按钮时,可以进入到查询界面。背景:通过与查到的当天的天气相匹配,找到一个和预先放到程序中的图片。天气不同,显示的背景不同。滑动切换:左右滑动切换到信息界面二(NextPage)或者信息界面三(PreviousPage)。在滑动时有一定的动作效果。3.4.3信息界面之二(NextPage)在这个界面中,设计了用来显示未来两天大概的天气情况,即明天和后天的天气。具体的显示信息有以下几部分:标题:未来天气。天气图片:和主界面中的天气图标类似,这里是根据明天

28、的天气情况来设置的。明天的天气:这里会显示明天的天气情况,包括日期,天气,气温和风向风力等情况。后天的天气:显示的内容和明天的天气相同。天气图片:用于显示和后天天气相符的图片。导航按钮:有三个小按钮,其中最右边的一个是标为蓝色的按钮代表当前页。滑动切换:当用户向右滑动时,可以切换到信息的主界面中。3.4.4信息界面之三(PreviousPage)在这个界面中,设计了用来显示城市大概的介绍,包括旅游情况和城市的发展历史。具体的显示信息有以下几部分:标题:城市介绍,设置字体大小和颜色。介绍内容:主要是显示所查询城市的发展历史,著名的旅游景点等信息。导航按钮:有三个小按钮,其中最右边的一个是标为蓝色

29、的按钮代表当前页。滑动切换:当用户向左滑动时,可以切换到信息的主界面中。当用户继续向右滑动时,会切换这个界面的背景,达到一定的绚丽性。3.4.5查询界面当用户在信息的主界面中点击菜单按钮后,就会进入查询界面。在查询界面中,主要设计用于查询用户输入的城市的天气信息,主要包括以下几部分:检查网络按钮:用户可以用来检测当前手机的网络状态。用一个图片作为这个按钮的背景,当用户点击该按钮时,会显示当前的网络状态,或者返回获取失败。定位按钮:用于获取用户当前的位置。同样会用一个图片作为这个按钮的背景,当用户点击这个按钮时会显示一个圆形的进度条,在这个进度条中会显示“小陈正在努力为您获取.”,如果获取用户当

30、前位置成功时,会显示一个对话框,在对话框中会显示“Chen Weather欢迎您”和一个用于进入天气界面的按钮,在此同时会在屏幕的下方会显示用户所在的位置。作者信息:在这里加了我本人的一点信息,在屏幕的中下方会显示“Chen Weather”、“陈士杰”和“电子仪器10-1班”。输入信息框:在屏幕的最下方会有一个输入框,用于用户输入所查询的城市,在这个框中,默认的是显示“请输入要查询的城市(如:北京)”,并对这个输入框进行了背景设置,同时设置了用户输入城市时文字的颜色和大小。查询按钮:顾名思义,这个按钮是供用户在输入城市后,进行查询天气信息的按钮,这个按钮和输入信息框都放在最底部,并列而置。背

31、景设置:这个界面的背景在安桌应用程序的配置文件中设置,不做过多的设计。3.5 算法流程图关于项目的算法流程图,将在分别在信息显示模块和查询模块来进行描述。(1) 显示模块,主要是运行这个程序时,通过定位获取当前位置,然后得到当前位置的天气信息,并将结果信息显示出来,流程图如图3所示:(2) 查询模块,主要是得到要查询的城市名,然后进行查询,将得到的信息交给显示模块来显示,流程图如图4所示:跳转到NextPage退出向右滑动切换背景查询跳转到PreviousPage进入查询模块向右滑动切换到主界面向左滑动切换到主界面显示信息解析天气信息获取天气信息获取地址成功显示程序启动界面显示完成Y显示信息主

32、界面网络是否连接开始结束获取用户所在地址NNY图3-2 显示模块流程图判断合法?获取当前的网络状态开始进入查询界面获取用户当前所在地获取所查询的城市检测当前的网络状态显示位置信息显示网络状态信息网络是否连接YN解析天气信息获取天气信息显示信息进入显示模块结束退出YN图3-3 查询模块流程图4 项目实现在项目实现方面,将以程序运行、界面显示、天气查询、定位、一个后台运行的Service、以及下拉刷新等方面,来进行适当的描述。4.1 启动画面在这个项目中,在MainActivity.java文件中建立了一个类,在该类的onCreate方法中设置它的布局变量,并在配置文件中注册一下,声明该布局文件是

33、程序启动时显示的界面。public class MainActivity extends Activity /一个ImageView控件变量,是用来显示背景图片private ImageView imageview; protected void onCreate(Bundle savedInstanceState) /给这个Activity设置相应的的布局文件setContentView(R.layout.activity_main); imageview = (ImageView) findViewById(R.id.iv);/声明一个Intent的变量,用来启动Welcom这个类fina

34、l Intent intent = new Intent(this, Welcom.class);Timer timer = new Timer();/创建一个时间任务队列,在这个队列中,先休眠3*1000ms,然后再执/行run(),启动Welcomtimer.schedule(new TimerTask() public void run() startActivity(intent);finish();, 3 * 1000);在AndroidManifest.xml文件中注册。 android:name=com.example.weatherdemon.MainActivity 然后就会

35、启动Welcom类,在这个类中会显示四张通过滑动选择的图片。Java文件如下:public class Welcom extends Activity /声明一些变量,此处省略。/点击事件函数public boolean onTouchEvent(MotionEvent touchevent) switch (touchevent.getAction() / 当用户手指点击屏幕时,按下的动作,记录下手指所在的坐标。case MotionEvent.ACTION_DOWN: oldTouchValue = touchevent.getX();break;/ 当用户手指离开屏幕的动作,记录这个时候

36、手指所在的坐标case MotionEvent.ACTION_UP: float currentX = touchevent.getX();/代表向右滑动,显示前一个画面,第一画面除外。if (oldTouchValue 0) /设置画面切换时的动作和我们看到的背景图片mVf.setInAnimation(Welcom.inFromLeftAnimation();mVf.setOutAnimation(Welcom.outToRightAnimation();mVf.showPrevious();if (i currentX) if (i = 4) /当画面在第四个的时候,如果继续向左滑动,将

37、启/动Weather类,进入显示界面Intent intent = new Intent(this, Weather.class);int flag = 1;intent.putExtra(fist_time_flag, flag);startActivity(intent);finish();i+;setImageView(i);mVf.setInAnimation(Welcom.inFromRightAnimation();mVf.setOutAnimation(Welcom.outToLeftAnimation();/显示下一个画面mVf.showNext();public void s

38、etImageView(int i) if(i = 1)/通过设置ImageView控件变量,来显示四个导航按钮iv1.setImageResource(R.drawable.guide_dot_selected);.4.2信息界面显示实现在代码中,没有具体的在一个文件中实现一个功能,这也是代码的一个重要的缺点,耦合程度高,独立性较差。这也是在今后的学习工作中要花比较大的精力来改善代码的耦合性。显示模块中,主要的代码是在Weather.java、NextPage.java和PreviousPage.java文件中,以下是对显示模块中三个主要的文件进行分析:4.2.1 Weather在这个文件中

39、,创建了一个Weather类,主要的工作都是由这个类完成的。当用户进入到这个类时,首先是进入onCreate方法,在这个方法中先进行一些类似初始化的工作。在这个函数中会启动GetWeatherService这个服务,并和它进行绑定,提供天气查询的功能。protected void onCreate(Bundle savedInstanceState) /启动GetWeatherService,来获取天气信息startService = new Intent(this,GetWeatherService.class);/设置下拉刷新时的显示界面,然后再设置mPullScrollView的监听函数

40、mPullScrollView = new PullToRefreshScrollView(this); /开一个handle消息处理函数,采用的匿名内部类handler = new Handler() public void handleMessage(Message msg) switch (msg.what) /当程序运行功能界面时会首先选择这个情况case fist_time:/首先会调用函数检测网络的连接状态if(!getNetworkState(Weather.this)/从手机基站获取用户所在地的经度和纬度itude = getLocation();/然后调用这个函数从谷歌地图中

41、获取当前所在的城市addr = getAddr(itude);/这个函数会开一个线程,通过binder通信,与/GetWeatherService建立联系,获取天气信息,runThread(); /定义一个ImageButton,并为它设置监听函数,这个控件就是在信息界/面中显示的菜单按钮,通过它可以进入查询界面imageButton = (ImageButton)findViewById(R.id.ibutton);imageButton.setOnClickListener(new View.OnClickListener() /在这里设置了一个匿名内部类,如果用户点击了这个按钮,则会/通

42、过Intent跳转到GetInfo类public void onClick(View v) Intent intent = new Intent(Weather.this,GetInfo.class);startActivity(intent);/这个函数是用来获取一个GetWeatherService类中的一个内部类/MyBinder的实例,运用的是binder通信机制,由操作系统调用/conn的一个连接函数返回实例bindService(startService, conn, Service.BIND_AUTO_CREATE);/这个函数是在这里,当Activity的生命周期onCreat

43、e等方/法都完成后才由操作系统调用,成功后返回一个GetWeatherService的实例public void onServiceConnected(ComponentName name, IBinder service) igetweather = (IGetWeather) service;Log.d(TAG, Get igetweather = + igetweather);/这个run方法是GetWeatherInfoThread线程的执行函数,用来获取天气信息public void run() try /这个循环在这里至关重要,让这个线程休眠若干个10ms,目的/只有一个:让主线程

44、中的bindService完成绑定,返回实例igetweatherdo /调用线程的休眠函数,休眠若干个10ms while (null = igetweather);/在这个函数中会调用GetWeatherService中的函数GetWeatherInfo(city); public void GetWeatherInfo(String cityname) WeatherInfo weatherinfo = null;try /调用service中的函数,实际上是调用IGetWeather接口中的接口函/数,这个接口是在Service中实现的weatherinfo = igetweather.getweatherinfofromservice(cityname); /然后发送消息,在消息处理函数中被处理,实际的功能时,调用内部/函数将获得的信息显示出来Message msg = new Message();msg.what = mainpage;msg.obj = weatherin

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号