Android指南针软件计算机毕业设计论文.doc

上传人:laozhun 文档编号:2393969 上传时间:2023-02-17 格式:DOC 页数:58 大小:4.15MB
返回 下载 相关 举报
Android指南针软件计算机毕业设计论文.doc_第1页
第1页 / 共58页
Android指南针软件计算机毕业设计论文.doc_第2页
第2页 / 共58页
Android指南针软件计算机毕业设计论文.doc_第3页
第3页 / 共58页
Android指南针软件计算机毕业设计论文.doc_第4页
第4页 / 共58页
Android指南针软件计算机毕业设计论文.doc_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《Android指南针软件计算机毕业设计论文.doc》由会员分享,可在线阅读,更多相关《Android指南针软件计算机毕业设计论文.doc(58页珍藏版)》请在三一办公上搜索。

1、基于Android的指南针软件的设计与实现摘要随着科技的发展,智能手机得到普及,由Google公司开发的基于Linux的自由及开放源代码的操作系统Android凭借其开放性及丰富的应用受到广大手机用户的喜爱,逐渐成为了市场占有量最大的移动平台操作系统,所以开发基于Android系统的应用软件变得十分必要。本应用软件针对智能手机用户日常出游、出差时经常遇到的找不着方向的问题,采用软件工程中结构化思想、标准的软件设计流程,从可行性研究、需求分析、系统设计及系统实现和测试等步骤来开发,基于Android开发平台,采用Java语言和xml布局编写,实现了利用手机自带的电子罗盘传感器来为用户指明方向的功

2、能。关键词:Android;操作系统;智能手机;电子罗盘;指南针Design and implementation of a compass software based on AndroidAbstractWith the development of technology, smart phones gain popularity, developed by Google based on the free and open-source Linux operating system Android, with its openness and rich applications love

3、d by the majority of mobile phone users, has become the largest market share of mobile operating system platform, so developers based on the Android system application software becomes necessary.This application software is designed for deal the problem which the smartphone users could not find the

4、direction ,and this problem always happens during the daily travel time or daily outings ,using structured software engineering ideas, using standard software design process, from feasibility studies, requirements analysis, systems design and system implementation and testing steps to develop, based

5、 on Android development platform, written in Java language and xml layout to achieve a use the phone comes with an electronic compass sensor to indicate the direction of the user function.Key words: Android; operating system; smart phones; electronic compass; compass目录摘要IABSTRACTII1绪论11.1Android系统开发

6、背景11.1.1研究背景11.1.2Android 开发平台的优势11.1.3Android 的市场前景21.1.4Android 的国内市场21.2课题的目的与意义31.3本论文主要研究内容32ANDROID相关知识42.1开发工具42.1.1Eclipse42.1.2Android SDK52.1.3ADT52.2Android系统的特性52.3Android系统平台架构62.3.1Linux内核72.3.2Android程序库72.3.3Android运行库82.3.4应用程序框架82.3.5应用程序82.4Android系统的四大核心组件92.4.1Activity及其生命周期92.4

7、.2Service及其生命周期102.4.3BroadCastRececiver介绍112.4.4ContentProvider介绍132.5Android中的传感器142.6Android中的界面布局152.7Android Animation动画173ANDROID的指南针软件的设计及准备193.1研究目标193.2可行性研究193.2.1经济可行性203.2.2技术可行性203.2.3操作可行性213.3需求分析223.3.1实用性原则223.3.2安全可靠性原则223.3.3指南针软件的基本操作需求223.3.4指南针软件的基本界面需求223.3.5软件性能需求233.3.6运行环境需

8、求233.4配置开发环境233.4.1安装JDK233.4.2安装Eclipse253.4.3安装SDK253.4.4安装ADT263.5制作指南针软件的材料准备264基于ANDROID的指南针软件的实现284.1界面设计284.2方向传感器的应用294.2.1获取管理服务294.2.2方向传感监听器的注册和取消注册294.2.3onSensorChanged及其效果304.3程序退出对话框314.4AndroidManifest.xml325基于ANDROID的指南针软件的测试346异常处理39总结40参考文献41致谢42附录43外文原文及其中文翻译471 绪论智能手机,简单来说就是像电脑一

9、样,具有独立的操作系统,可以通过安装第三方软件来扩充手机功能的手机。智能手机跟电脑一样,操作系统不止有一种,原因主要是手机的生产厂家很多,要统一基本不可能。但那是经过大浪淘沙,有四种手机操作系统被广大用户广泛接受,它们分别是Symbian、Android、Window Mobile和iOS。其中Android是由谷歌、开放手持设备联盟联合研发,谷歌独家推出的智能操作系统,2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班操作系统,跃居全球第一。2012年11月数据显示,安卓占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%,彻底占领中国智能手机市场

10、,也成为了全球最受欢迎的智能手机操作系统,因为谷歌推出安卓时采用开放源代码(开源)的形式推出,所以导致世界大量手机生产商采用安卓系统生产智能手机,再加上安卓在性能和其他各个方面上也非常优秀,便让安卓一举成为全球第一大智能操作系统。1.1 Android系统开发背景Android是一套真正意义上的开放性移动设备综合平台,它包括操作系统、中间件和一些关键的平台应用。Android最大特点在于它是一个开放的体系架构,具有非常好的开发和调试环境,而且还支持各种可扩展的用户体验,Android里面具有非常丰富的图形系统、对多媒体的支持功能和非常强大的浏览器。Android平台的开放性等特点既能促进技术(

11、包括平台自身)的创新,又有助于降低开发成本,还可以使运营商能非常方便地制定特色化的产品,因此,它具有很大的市场发展潜力。1.1.1 研究背景Android一词的本义指“机器人”,同时Android也是Google于2007年11月5日宣布的基于linux平台开源手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。2008年9月22日,美国运营商T-Mobile USA在纽约正式发布第一款基于Android的手机T-Mobile G1。该款手机为宏达电制造,是世界上第一部使用Android操作系统的手机,支持WCDMA/HSPA

12、网络,理论下载速率7.2Mbps,并支持 Wi-Fi。在随后的几个月越来越多的厂商也开始宣布将提供Android手机。1.1.2 Android 开发平台的优势Android是一个真正意义上的开放性移动设备综合平台。它包括操作系统、用户界面和应用程序移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。谷歌与开放手机联盟合作开发了 Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达和 T-Mobile 在内的 30 多家技术和无线应用的领军企业组成。通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,来建立标准化、开放式的移动电话软件平台,在

13、移动产业内形成一个开放式的生态系统,这样应用之间的通用性和互联性将在最大程度上得到保持。所有的Android应用之间是完全平等的。在开发之初,Android平台就被设计成一个由一系列应用所组成的平台。所有的应用都运行在一个核心的引擎上面,这个核心引擎其实就是一个虚拟机,它提供了一系列用于应用和硬件资源间进行通讯的API。撇开这个核心引擎,Android的所有其他的东西都是“应用”。因此,用户甚至可以将系统中默认的电话拨号软件替换成其他第三方的电话拨号软件。你也可以改变主界面显示窗口的内容,或者将手机中任意的应用替换成你所需要的其他应用。Android打破了应用之间的界限,比如开发人员可以把We

14、b上的数据与本地的联系人,日历,位置信息结合起来,为用户创造全新的用户体验。此外应用程序不仅可以通过标准API 访问核心移动设备功能,互联网,应用程序还可以声明它们的功能可以供其他应用程序使用,比如前面图 Android平台为开发人员提供了大量的实用库和工具,开发人员可以很快速的创建自己的应用。1.1.3 Android 的市场前景美国知名的互联网统计公司comScore近日刚刚发布了今年三月至五月的美国智能手机市场调研报告,这份最新的报告显示 ,全美目前共有4910万用户使用智能手机,其中有8.1%的用户为近三个月来新增用户。作为打拼多年的老品牌,黑莓仍然以41.7的市占率稳居全美智能手机占

15、有率排行版首位,其后的苹果和微软的是市占率分别为24.4%和13.2% ,特别值得一提的是,谷歌Android平台的占有率以13%的市占率紧随微软的13.2%之后,Android平台的整体市占率增加了4%,而如果将时间跨度限制到3月至5月的这三个月内,Android平台市占率增长数字甚至接近了45%。1.1.4 Android 的国内市场在国内,android社区十分红火,这些社区为android在中国的普及做了很好的推广作用,同时也为Android 相关产品的消费提供了市场。国内厂商和运营商也纷纷加入了android阵营,包括中国移动,中国联通,华为通讯,联想等大企业。同时不仅仅局限于手机,

16、国内厂家也陆续推出了采用android系统的MID(平板电脑)产品,比较著名的包括由Rockchip和蓝魔推出的同时具备高清播放和智能系统的音悦汇W7。我们可以预见android也将会被广泛应用在国产智能上网设备上,将进一步扩大Andorid系统的应用范围。android智能终端已成为当前智能手机,信息家电发展的主要方向,而网络故障的诊断解决已成为解决售后和用户正常使用的关键,研究和开发相关网络模块诊断程序变得尤为重要。本论文的主要研究目的就是研究为接下来的有关Android产品的做好售后服务工作 ,开发一个智能终端的网络诊断界面,完成相关网络的检测,并做好功能扩展。1.2 课题的目的与意义随

17、着时代的发展和人民生活水平的提高,出差和出游已经成为人们日常生活中的常见事情,大多人也喜欢到不同的地方去欣赏不一样的景色、感受当地人不同的生活方式。但是,当人们独自一人到达陌生的环境时,找不着方向便成为人们常常遇到的问题。此时人们会选择地图和导航软件来寻找路线,但是,地图需要人们知道自身所走的方向,而当网络不畅时,导航软件便失去作用,此时一个指南针软件的出现显得尤为重要。本软件是一款指南针软件,旨在为外出的智能手机用户指明方向,方便大家的生活。1.3 本论文主要研究内容本论文是对基于Android的指南针软件的设计与实现,目的是为了在陌生环境为外出的人们提供指明方向的工具,是为了方便人们的生活

18、。论文中介绍的指南针软件是通过Android系统中的电子罗盘传感器实现的,所以本论文主要研究如何通过对指南针软件界面的设计和如何通过电子罗盘传感器(方向传感器)实现。主要内容:1综述指南针软件在Android平台上的应用及意义;2了解Android系统UI设计的技术,;3熟悉指南针软件的开发环境及其测试环境; 4设计基于Android的指南针软件开始界面;5. 深入分析指南针的原理方法及界面的设计流程;6熟练掌握基于Android的指南针软件的编写;7设计与实现基于Android的指南针软件。2 Android相关知识2.1 开发工具2.1.1 EclipseEclipse 是一个开放源代码的

19、、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。1. 基本介绍:虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于

20、Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于Java开发工具。尽管 Eclipse 是使用Java语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如C/C+、COBOL、PHP等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于 Eclipse 的应用程序的一个突出例子是 IBM Rational Software Architect,它构成了 IBM Java 开

21、发工具系列的基础。2. 语言拓展:Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,通过安装不同的插件Eclipse可以支持不同的计算机语言,比如C+和Python等开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。Eclipse 最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。IBM提供了最初的Eclipse代码基础,包括Platform、JDT 和PDE。Eclipse项目IBM发起,围绕着

22、Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、Rational Software、Red Hat及Sybase等。Eclipse是一个开放源码项目,它其实是Visual Age for Java的替代品,其界面跟先前的Visual Age for Java差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。随后还有包括Oracle在内的许多大公司也纷纷加入了该项目,Eclipse的目标是成为可进行任何语言开发的IDE集成者,使用者只需下载各种语言的插件即可。

23、3. 主要组成:Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成Eclipse Platform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在

24、哪里结束,而另一个工具功能在哪里开始。2.1.2 Android SDK软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。因此,Android SDK 指的是Android专属的软件开发工具包。Android SDK提供了Windows/Linux/Mac平台上开发Android应用开发组件,其包含了在Android平台上开发移动应用的各种工具集。Android SDK不仅包括了Android模拟器和用于Eclipse的Android开发工具插件(ADT),而且包括了各种用来调试、打包以及在模拟器上安装应用的工具。Android S

25、DK主要是以Java为基础,用户可以使用Java语言来开发Android平台上的软件应用。通过SDK提供的一些工具将其打包成apk文件,然后应SDK中的模拟器来模拟和测试软件在Android平台上的运行情况和效果。相关特性:其最震撼人心之处在于Android手机系统的开放性和服务免费。Android是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有更大的自由度,突破了iPhone等只能添加为数不多的固定软件的枷锁;同时与Windows Mobile、Symbian等厂商不同,Android操作系统免费向开发人员提供,这样可节省近三成成本。2.1.3 ADTAndroid为Eclips

26、e订制了一个插件,即Android Development Tools,为Android开发提供开发工具的升级或变更,也为用户提供一个强大的综合环境用于开发Android应用程序。目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。ADT扩展了Eclipse的功能,可以让用户快速地创建Android项目,创建应用程序界面,以及SDK工具集调试应用程序。2.2 Android系统的特性1. 开放性:在优势方面,Android平台首先就是其开放性,开放

27、的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开放性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。2. 挣脱运营商的束缚:在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从iPhone上市,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G

28、至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。3. 丰富的硬件选择:这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。好比你从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。4. 不受任何限制的开发商:Android平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两

29、面性,血腥、暴力、情色方面的程序和游戏如何控制正是留给Android难题之一。5. 无缝结合的Google应用:如今叱诧互联网的Google已经走过10年度历史。从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。1) 可重用和可替换组件的程序应用框架2) 针对移动设备优化过的Dalvik虚拟机3) 集成了基于开源Webkit引擎的网页浏览器4) 经过优化过的自定义2D图形库和基于OpenGL ES 1.0库 可选硬件加速5) SQLite结构化的数据存储数据库6) 支持常规的音频视

30、频多媒体格式,如MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF、GSM电话(硬件决定)7) 蓝牙、GPRS-EDGE、3G和Wifi无线网络(硬件决定)8) 相机、GPS全球定位、导航和感应加速器9) 丰富的开发环境包含设备模拟器、工具、调试器、内存和性能分析工具,以及Eclipse集成开发环境插件2.3 Android系统平台架构对操作系统而言,必须做到设计合理、层次分明。同时还需考虑整个系统的结构要聚耦适当,Android系统是基于Linux内核的,因此还具备开源的特性,以符合开发人员共同工作。Android操作系统的体系结构可分为四层,由上到下依次是应用程序、应用

31、程序框架、核心类库和Linux内核,其中核心类库层还包括Android运行时环境。系统架构如图2-1所示。图2-1 Android系统平台架构 参照图2-1,对系统各部分主要组件作以下描述。22.22.3.1 Linux内核Android的核心系统服务依赖于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的硬件抽象层。Android基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。分层的好处就是使用

32、下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各 层各司其职,各层提供固定的SAP(Service Access Point),专业点可以说是高内聚、低耦合。2.3.2 Android程序库Android包括一个被Android系统中各种不同组件所使用的C/C+集库。该库通过Android应用程序框架为开发者提供服务。以下是一些核心库:1) Surface Manager:管理显示子系统,并且为多个应用程序提供2D和3D图层的无缝融合。2) Media Framework:基于OpenCORE的多媒体框架,支持多种常用的音频、视频

33、格式文件的回放和录制,同时支持静态图像文件。3) SQLite:一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。4) OpenGL ES:3D图形库,用于3D图形渲染,该库可以使用3D赢家加速。5) FreeType:位图(Bitmap)和矢量(Vector)字体显示。6) WebKit:支持Android浏览器和一个可嵌入的Web视图7) SGL:2D图形库,用于2D图形渲染。8) LibC:一个从BSD继承的标准C系统函数库,他是专门为基于嵌入式Linux设备制定的。2.3.3 Android运行库Android运行时由两部分组成:Android核心库集和Dalvik虚拟机。其中

34、核心库提供了Java语言核心库所能使用的绝大部分功能,而虚拟机则负责运行Android应用程序。每个Android应用程序都运行在单独的一个Dalvik虚拟机内,因此Dalvik专门针对同时高效地运行多个虚拟机进行了优化,因此Android系统可以方便地实现对应用程序进行隔离。实际上,JVM虚拟机运行的是Java字节码(通常是.class文件),但Dalvik运行的是其专有的dex(Dalvik Executable)文件。JVM直接从.class文件或JAR包中加载字节码然后运行;而Dalvik则无法直接从.class文件或JAR包中加载字节码,它需要对DX工具将应用程序的所有.class文

35、件编译成.dex文件,Dalvik则运行该.dex文件。2.3.4 应用程序框架应用程序框架可以说是一个应用程序的核心,是所有参与开发的程序员共同使用和遵守的约定,大家在其约定上进行必要的扩展,但程序始终保持主体结构的一致性。其作用是让程序保持清晰和一目了然,在满足不同需求的同时又不互相影响。Android系统提供给应用开发者的本身就是一个框架,所有的应用开发都必须遵守这个框架的原则。当我们开发Android应用程序时,就是面向底层的应用程序框架进行的。从这个意义上看,Android系统上的应用程序时完全平等的,不管是Android系统提供的程序,还是普通开发者提供的程序,他们都可以访问And

36、roid提供的API框架。Android应用程序框架提供了大量API供开发者使用。应用程序框架可作为应用程序开发的基础之外,也是软件复用的重要手段,任何一个应用程序都可发布它的功能模块-只要发布时遵守了框架的约定,那么其他应用程序也可使用这个功能模块。2.3.5 应用程序Android系统发布时,会同一系列核心应用程序和常用程序一起发布,如经常电子邮件客户端、SMS程序、日历、地图、浏览器、联系人等、这些应用程序都是用Java编写的。2.4 Android系统的四大核心组件Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,Broa

37、dcastReceiver广播接收器。不是每一个Android应用程序都必须有这四部分组成。2.4.1 Activity及其生命周期Activity通俗地讲就是用户界面,它有其自身的生命周期。一个应用程序通常包含多个Activity,它们可以互相切换。Activity的使用需要在mainfest文件中进行声明。 一个Activity通常是一个单独的屏幕,Activity生命周期是指Activity从启动到销毁的过程。系统中的Activity被一个Activity栈所管理。当一个新的Activity启动时,将被放置到栈顶,成为运行中的Activity,前一个Activity保留在栈中,不再放到前

38、台,直到运行中的Activity退出为止。Activity表现为四种状态:活动状态(Active or Running):也称为运行状态,处于Activity栈顶,在用户界面中最上层,完全能被用户看到,能够与用户进行交互; 暂停状态(Paused):Activity失去焦点,Activity界面被部分遮挡,该Activity不再处于用户界面的最上层,且不能够与用户进行交互。一个暂停状态的Activity依然保持活力(保持所有的状态,成员信息,与窗口管理器保持连接),但是在系统内存不够用的时候将被杀掉;停止状态(Stopped):Activity在界面上完全不能被用户看到,也就是说这个Activ

39、ity被其他Activity全部遮挡,但它依然保持所有状态和成员信息,只是它不再可见,它的窗口被隐藏;非活动状态(Killed):当系统内存需要被用在其他地方的时候,一个停止状态的Activity被杀掉。如果一个Activity是Paused或者Stopped状态时可以被恢复,也可以被删除。一个被删除(杀掉)的Activity如果需要重新恢复就需要重启。Activity的生命周期由几个常用的覆写方法来实现,分别是:onCreate(),onStart(),onResume(),onPause(),onStop(),onDestroy(),onRestart()七个方法。整个生命周期,从onCr

40、eate()开始到onDestroy()结束。Activity在onCreate()设置所有的“全局”状态,在onDestory()释放所有的资源。例如:某个Activity有一个在后台运行的线程,用于从网络下载数据,则该Activity可以在onCreate()中创建线程,在onDestory()中停止线程。可见的生命周期,从onStart()开始到onStop()结束。在这段时间,可以看到Activity在屏幕上,尽管有可能不在前台,不能和用户交互。在这两个接口之间,需要保持显示给用户的UI数据和资源等,例如:可以在onStart中注册一个Intent Receiver来监听数据变化导致U

41、I的变动,当不再需要显示时候,可以在onStop()中注销它。onStart(),onStop()都可以被多次调用,因为Activity随时可以在可见和隐藏之间转换。前台的生命周期,从onResume()开始到onPause()结束。在这段时间里,该Activity处于所有 Activity的最前面,和用户进行交互。Activity可以经常在resumed和paused状态之间切换,例如:当设备准备休眠时,当一个Activity处理结果被分发时,当一个新的Intent被分发时。Activity的整个生命周期都定义在下面的接口方法中,所有方法都可以被重载。所有的Activity都需要实现 onC

42、reate()去初始化设置,大部分Activity需要实现onPause()去提交更改过的数据,当前大部分的Activity也需要实现onFreeze()接口,以便恢复在onCreate()里面设置的状态。图2-2展示了上述Activity生命周期以及Activity在这些方法过程之中经历的状态改变。图2-2 Activity生命周期过程及历经的状态改变2.4.2 Service及其生命周期Service不像Activity那样,它不直接与用户进行交互,没有用户界面,能长期在后台运行,且比Activity具有更高的优先级,在系统资源紧张时不会轻易被Android系统终止。每个服务都是从Serv

43、ice基类中派生的。service可以通过两种方式创建:startService()和bindService().startService():一般用于在后台上传文件或者下载文件等,不跟其他组件通信,就算启动它的应用被销毁了,它仍然会欢快的在后台执行,直到完成任务的时候自刎(自己调用stopSelf())或者被其他人下黑手(调用stopService().bindService():允许其他组件跟它进行通信,允许多个客户端绑定到同一个service上,当所有的客户端都解除绑定后,该service就销毁了。service的生命周期主要是跟这4个回调函数相关,onCreate()、onStartC

44、ommend()、onBind()、onDestory()。如下图所示:图2-3 Service生命周期过程及历经的状态改变2.4.3 BroadCastRececiver介绍Android系统中有各式各样的广播,当系统/应用程序运行时便会向Android注册各种广播,主要有两种注册类型:第一种是非常驻型广播,此类广播会伴随应该程序的生命周期;第二种是常驻型广播,此类广播不会随应用程序是否关闭而存在,只要有广播就会被系统调用自动运行。Android系统接收到广播后便会对广播进行判断,并找出所需事件,然后向不同应用程序注册事件。一个广播接收者有一个回调方法:void onReceive(Cont

45、extcurContext, Intent broadcastMsg)。当一个广播消息到达接收者是,Android调用它的onReceive()方法并传递给它包含消息的Intent对象。广播接收者被认为仅当它执行这个方法时是活跃的。当onReceive()返回后,它是不活跃的。有一个活跃的广播接收者的进程是受保护的,不会被杀死。但是系统可以在任何时候杀死仅有不活跃组件的进程,当占用的内存别的进程需要时。这带来一个问题,当一个广播消息的响应时费时的,因此应该在独立的线程中做这些事,远离用户界面其它组件运行的主线程。如果onReceive()衍生线程然后返回,整个进程,包括新的线程,被判定为不活跃

46、的(除非进程中的其它应用程序组件是活跃的),将使它处于被杀的危机。解决这个问题的方法是onReceive()启动一个服务,及时服务做这个工作,因此系统知道进程中有活跃的工作在做。推荐android 开发:广播(broadcast)的应用android中,不同进程之间传递信息要用到广播,可以有两种方式来实现。第一种方式:在Manifest.xml中注册广播,是一种比较推荐的方法,因为它不需要手动注销广播(如果广播未注销,程序退出时可能会出错)。具体实现在Manifest的application中添加: 上面两个android:name分别是广播名和广播的动作(这里的动作是表示系统启动完成),如果

47、要自己发送一个广播,在代码中为:Intent i = new Intent(android.intent.action.BOOT_COMPLETED);sendBroadcast(i);这样,广播就发出去了,然后是接收。接收可以新建一个类,继承至BroadcastReceiver,也可以建一个BroadcastReceiver的实例,然后得写onReceive方法,实现如下:protected BroadcastReceiver mEvtReceiver = new BroadcastReceiver() Overridepublic void onReceive(Context context, Intent intent) String action = intent.getAction();if (action.equals(android.intent.act

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号