




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
太原理工大学毕业设计 (论文)用纸 i 基于 Android 的指南针软件的设计与实现 摘要 随着科技的发展,智能手机得到普及,由 Google 公司开发的基于 Linux 的自由及 开放源代码的操作系统 Android 凭借其开放性及丰富的应用受到广大手机用户的喜爱, 逐渐成为了市场占有量最大的移动平台操作系统,所以开发基于 Android 系统的应用 软件变得十分必要。 本应用软件针对智能手机用户日常出游、出差时经常遇到的找不着方向的问题, 采用软件工程中结构化思想、标准的软件设计流程,从可行性研究、需求分析、系统 设计及系统实现和测试等步骤来开发,基于 Android 开发平台,采用 Java 语言和 xml 布局编写,实现了利用手机自带的电子罗盘传感器来为用户指明方向的功能。 关键词:Android; 操作系统;智能手机;电子罗盘;指南针 全套设计加扣 3012250582 太原理工大学毕业设计 (论文)用纸 ii Design and implementation of a compass software based on Android Abstract With 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 loved 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 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 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 太原理工大学毕业设计 (论文)用纸 1 目录 摘要 .I ABSTRACT .II 1绪论.1 1.1ANDROID系统开发背景 .1 1.1.1 研究背景.1 1.1.2 Android 开发平台的优势.1 1.1.3 Android 的市场前景.2 1.1.4 Android 的国内市场.2 1.2课题的目的与意义 .3 1.3本论文主要研究内容 .3 2ANDROID 相关知识 .4 2.1开发工具 .4 2.1.1 Eclipse.4 2.1.2 Android SDK.5 2.1.3 ADT.5 2.2ANDROID系统的特性 .5 2.3ANDROID系统平台架构 .6 2.3.1 Linux 内核 .7 2.3.2 Android 程序库 .7 2.3.3 Android 运行库 .8 2.3.4 应用程序框架.8 2.3.5 应用程序.8 2.4ANDROID系统的四大核心组件 .9 2.4.1 Activity 及其生命周期 .9 2.4.2 Service 及其生命周期 .10 2.4.3 BroadCastRececiver 介绍 .11 2.4.4 ContentProvider 介绍 .13 2.5ANDROID中的传感器 .14 2.6ANDROID中的界面布局 .15 2.7ANDROID ANIMATION动画 .17 3ANDROID 的指南针软件的设计及准备 .19 3.1研究目标 .19 3.2可行性研究 .19 3.2.1 经济可行性.20 3.2.2 技术可行性.20 3.2.3 操作可行性.21 3.3需求分析 .22 太原理工大学毕业设计 (论文)用纸 2 3.3.1 实用性原则.22 3.3.2 安全可靠性原则.22 3.3.3 指南针软件的基本操作需求.22 3.3.4 指南针软件的基本界面需求.22 3.3.5 软件性能需求.23 3.3.6 运行环境需求.23 3.4配置开发环境 .23 3.4.1 安装 JDK .23 3.4.2 安装 Eclipse .25 3.4.3 安装 SDK .25 3.4.4 安装 ADT .26 3.5制作指南针软件的材料准备 .26 4基于 ANDROID 的指南针软件的实现.28 4.1界面设计 .28 4.2方向传感器的应用 .29 4.2.1 获取管理服务.29 4.2.2 方向传感监听器的注册和取消注册.29 4.2.3 onSensorChanged 及其效果 .30 4.3程序退出对话框 .31 4.4ANDROIDMANIFEST.XML.32 5基于 ANDROID 的指南针软件的测试.34 6异常处理.39 总结 .40 参考文献 .41 致谢 .42 附录 .43 外文原文及其中文翻译 .47 太原理工大学毕业设计 (论文)用纸 1 1绪论 智能手机,简单来说就是像电脑一样,具有独立的操作系统,可以通过安装第三方 软件来扩充手机功能的手机。智能手机跟电脑一样,操作系统不止有一种,原因主要是 手机的生产厂家很多,要统一基本不可能。但那是经过大浪淘沙,有四种手机操作系统 被广大用户广泛接受,它们分别是Symbian、Android、Window Mobile 和 iOS。其中 Android 是由谷歌、开放手持设备联盟联合研发,谷歌独家推出的智能操作系统, 2011 年初数据显示,仅正式上市两年的操作系统Android 已经超越称霸十年的塞班操作系统, 跃居全球第一。2012 年 11 月数据显示,安卓占据全球智能手机操作系统市场76%的份 额,中国市场占有率为90%,彻底占领中国智能手机市场,也成为了全球最受欢迎的智 能手机操作系统,因为谷歌推出安卓时采用 开放源代码(开源)的形式推出,所以导致 世界大量手机生产商采用安卓系统生产智能手机,再加上安卓在性能和其他各个方面上 也非常优秀,便让安卓一举成为全球第一大智能操作系统 。 1.1 Android 系统开发背景 Android 是一套真正意义上的开放性移动设备综合平台,它包括操作系统、中间件 和一些关键的平台应用。Android 最大特点在于它是一个开放的体系架构,具有非常好 的开发和调试环境,而且还支持各种可扩展的用户体验, Android 里面具有非常丰富的 图形系统、对多媒体的支持功能和非常强大的浏览器。 Android 平台的开放性等特点既能促进技术(包括平台自身)的创新,又有助于降 低开发成本,还可以使运营商能非常方便地制定特色化的产品,因此,它具有很大的市 场发展潜力。 1.1.1 研究背景 Android 一词的本义指“机器人”,同时Android 也是 Google 于 2007 年 11 月 5 日 宣布的基于linux 平台开源手机操作系统名称,该平台由操作系统、中间件、用户界面 和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。 2008 年 9 月 22 日,美国运营商T-Mobile USA 在纽约正式发布第一款基于Android 的手机T- Mobile G1。该款手机为宏达电制造,是世界上第一部使用Android 操作系统的手机, 支持 WCDMA/HSPA 网络,理论下载速率7.2Mbps,并支持 Wi-Fi。在随后的几个月越来越 多的厂商也开始宣布将提供Android 手机。 1.1.2 Android 开发平台的优势 Android 是一个真正意义上的开放性移动设备综合平台。它包括操作系统、用户界 面和应用程序移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新 的专有权障碍。谷歌与开放手机联盟合作开发了 Android,这个联盟由包括中国移动、 摩托罗拉、高通、宏达和 T-Mobile 在内的 30 多家技术和无线应用的领军企业组成。 太原理工大学毕业设计 (论文)用纸 2 通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,来建 立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统,这 样应用之间的通用性和互联性将在最大程度上得到保持。 所有的Android 应用之间是完全平等的。在开发之初, Android 平台就被设计成一 个由一系列应用所组成的平台。所有的应用都运行在一个核心的引擎上面,这个核心引 擎其实就是一个虚拟机,它提供了一系列用于应用和硬件资源间进行通讯的API。撇开 这个核心引擎,Android 的所有其他的东西都是“应用”。因此,用户甚至可以将系统 中默认的电话拨号软件替换成其他第三方的电话拨号软件。你也可以改变主界面显示窗 口的内容,或者将手机中任意的应用替换成你所需要的其他应用。 Android 打破了应用 之间的界限,比如开发人员可以把Web 上的数据与本地的联系人,日历,位置信息结合 起来,为用户创造全新的用户体验。 此外应用程序不仅可以通过标准API 访问核心移动设备功能,互联网,应用程序 还可以声明它们的功能可以供其他应用程序使用,比如前面图 Android 平台为开发人员 提供了大量的实用库和工具,开发人员可以很快速的创建自己的应用。 1.1.3 Android 的市场前景 美国知名的互联网统计公司comScore 近日刚刚发布了今年三月至五月的美国智能 手机市场调研报告,这份最新的报告显示 ,全美目前共有4910 万用户使用智能手机, 其中有8.1%的用户为近三个月来新增用户。作为打拼多年的老品牌,黑莓仍然以41.7 的市占率稳居全美智能手机占有率排行版首位,其后的苹果和微软的是市占率分别为 24.4%和 13.2% ,特别值得一提的是,谷歌Android 平台的占有率以13%的市占率紧随 微软的13.2%之后,Android 平台的整体市占率增加了4%,而如果将时间跨度限制到3 月至 5 月的这三个月内,Android 平台市占率增长数字甚至接近了45%。 1.1.4 Android 的国内市场 在国内,android 社区十分红火,这些社区为android 在中国的普及做了很好的推 广作用,同时也为Android 相关产品的消费提供了市场。国内厂商和运营商也纷纷加 入了 android 阵营,包括中国移动,中国联通,华为通讯,联想等大企业。同时不仅仅 局限于手机,国内厂家也陆续推出了采用android 系统的MID(平板电脑)产品,比较 著名的包括由Rockchip 和蓝魔推出的同时具备高清播放和智能系统的音悦汇W7。我们 可以预见android 也将会被广泛应用在国产智能上网设备上,将进一步扩大Andorid 系 统的应用范围。 android 智能终端已成为当前智能手机,信息家电发展的主要方向,而网络故障的 诊断解决已成为解决售后和用户正常使用的关键,研究和开发相关网络模块诊断程序变 得尤为重要。本论文的主要研究目的就是研究为接下来的有关Android 产品的做好售后 太原理工大学毕业设计 (论文)用纸 3 服务工作 ,开发一个智能终端的网络诊断界面,完成相关网络的检测,并做好功能扩 展。 1.2 课题的目的与意义 随着时代的发展和人民生活水平的提高,出差和出游已经成为人们日常生活中的常 见事情,大多人也喜欢到不同的地方去欣赏不一样的景色、感受当地人不同的生活方式。 但是,当人们独自一人到达陌生的环境时,找不着 方向便成为人们常常遇到的问题。此 时人们会选择地图和导航软件来寻找路线,但是,地图需要人们知道自身所走的方向, 而当网络不畅时,导航软件便失去作用,此时一个指南针 软件的出现显得尤为重要。 本软件是一款指南针软件,旨在为外出的智能手机用户指明方向,方便大家的生活。 1.3 本论文主要研究内容 本论文是对基于Android 的指南针软件的设计与实现,目的是为了在陌生环境为外 出的人们提供指明方向的工具,是为了方便人们的生活。论文中介绍的指南针软件是通 过 Android 系统中的电子罗盘传感器实现的,所以本论文主要研究如何通过对指南针软 件界面的设计和如何通过电子罗盘传感器 (方向传感器)实现。 主要内容: 1综述指南针软件在Android 平台上的应用及意义; 2了解Android 系统 UI 设计的技术,; 3熟悉指南针软件的开发环境及其测试环境; 4设计基于Android 的指南针软件开始界面; 5. 深入分析指南针的原理方法及界面的设计流程; 6熟练掌握基于Android 的指南针软件的编写; 7设计与实现基于Android 的指南针软件。 太原理工大学毕业设计 (论文)用纸 4 2Android 相关知识 2.1 开发工具 2.1.1 Eclipse Eclipse 是一个开放源代码的、基于Java 的可扩展开发平台。就其本身而言,它 只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是, Eclipse 附带 了一个标准的插件集,包括Java 开发工具(Java Development Kit,JDK)。 1. 基本介绍: 虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它 允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插 件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所 有工具开发人员都具有同等的发挥场所。 这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言 开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C+、COBOL、PHP 等编 程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无 关的其他应用程序类型的基础,比如内容管理系统。 基于 Eclipse 的应用程序的一个突出例子是 IBM Rational Software Architect,它构成了 IBM Java 开发工具系列的基础。 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 发起,围绕着 Eclipse 项目已经发展成为了一个庞大的 Eclipse 联盟,有 150 多家软 件公司参与到 Eclipse 项目中,其中包括 Borland、Rational Software、Red Hat 及 Sybase 等。Eclipse 是一个开放源码项目,它其实是 Visual Age for Java 的替代品, 其界面跟先前的 Visual Age for Java 差不多,但由于其开放源码,任何人都可以免 费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。随后还有包括 Oracle 在内的许多大公司也纷纷加入了该项目,Eclipse 的目标是成为可进行任何语 言开发的 IDE 集成者,使用者只需下载各种语言的插件即可。 3. 主要组成: 太原理工大学毕业设计 (论文)用纸 5 Eclipse 是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供 一个全功能的、具有商业品质的工业平台。它主要由 Eclipse 项目、Eclipse 工具项 目和 Eclipse 技术项目三个项目组成,具体包括四个部分组成Eclipse Platform、JDT、CDT 和 PDE。JDT 支持 Java 开发、CDT 支持 C 开发、PDE 用来支持插 件开发,Eclipse Platform 则是一个开放的可扩展 IDE,提供了一个通用的开发平台。 它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform 允许工具建 造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而 另一个工具功能在哪里开始。 2.1.2 Android SDK 软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、 操作系统等建立应用软件的开发工具的集合。因此, Android SDK 指的是Android 专属 的软件开发工具包。 Android SDK 提供了Windows/Linux/Mac 平台上开发Android 应用开发组件,其包 含了在Android 平台上开发移动应用的各种工具集。 Android SDK 不仅包括了Android 模拟器和用于Eclipse 的 Android 开发工具插件(ADT),而且包括了各种用来调试、 打包以及在模拟器上安装应用的工具。 Android SDK 主要是以Java 为基础,用户可以使 用 Java 语言来开发Android 平台上的软件应用。通过SDK 提供的一些工具将其打包成 apk 文件,然后应SDK 中的模拟器来模拟和测试软件在Android 平台上的运行情况和效 果。 相关特性: 其最震撼人心之处在于 Android 手机系统的开放性和服务免费。Android 是一个 对第三方软件完全开放的平台,开发者在为其开发程序时拥有更大的自由度,突破了 iPhone 等只能添加为数不多的固定软件的枷锁;同时与 Windows Mobile、Symbian 等 厂商不同,Android 操作系统免费向开发人员提供,这样可节省近三成成本。 2.1.3 ADT Android 为 Eclipse 订制了一个插件,即Android Development Tools,为 Android 开发提供开发工具的升级或变更,也为用户提供一个强大的综合环境用于开发Android 应用程序。目前 Android 开发所用的开发工具是 Eclipse,在 Eclipse 编译 IDE 环境 中,安装 ADT,为 Android 开发提供开发工具的升级或者变更,简单理解为在 Eclipse 下开发工具的升级下载工具。ADT 扩展了Eclipse 的功能,可以让用户快速地创建 Android 项目,创建应用程序界面,以及SDK 工具集调试应用程序。 2.2 Android 系统的特性 1. 开放性: 太原理工大学毕业设计 (论文)用纸 6 在优势方面,Android 平台首先就是其开放性,开放的平台允许任何移动终端厂 商加入到 Android 联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和 应用的日益丰富,一个崭新的平台也将很快走向成熟。 开放性对于 Android 的发展而言,有利于积累人气,这里的人气包括消费者和厂 商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大 竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。 2. 挣脱运营商的束缚: 在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使 用什么功能接入什么网络,几乎都受到运营商的控制。自从 iPhone 上市,用户可以更 加方便地连接网络,运营商的制约减少。随着 EDGE、HSDPA 这些 2G 至 3G 移动网络的 逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。 3. 丰富的硬件选择: 这一点还是与 Android 平台的开放性相关,由于 Android 的开放性,众多的厂商 会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数 据同步、甚至软件的兼容。好比你从诺基亚 Symbian 风格手机一下改用苹果 iPhone, 同时还可将 Symbian 中优秀的软件带到 iPhone 上使用、联系人等资料更是可以方便地 转移。 4. 不受任何限制的开发商: Android 平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各 种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性, 血腥、暴力、情色方面的程序和游戏如何控制正是留给 Android 难题之一。 5. 无缝结合的 Google 应用: 如今叱诧互联网的 Google 已经走过 10 年度历史。从搜索巨人到全面的互联网渗 透,Google 服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而 Android 平台手机将无缝结合这些优秀的 Google 服务。 1) 可重用和可替换组件的程序应用框架 2) 针对移动设备优化过的Dalvik 虚拟机 3) 集成了基于开源Webkit 引擎的网页浏览器 4) 经过优化过的自定义2D 图形库和基于OpenGL ES 1.0 库 可选硬件加速 5) SQLite 结构化的数据存储数据库 6) 支持常规的音频视频多媒体格式,如 MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF、GSM 电话(硬件决定) 7) 蓝牙、GPRS-EDGE、3G 和 Wifi 无线网络(硬件决定) 8) 相机、GPS 全球定位、导航和感应加速器 9) 丰富的开发环境包含设备模拟器、工具、调试器、内存和性能分析工具,以及 Eclipse 集成开发环境插件 太原理工大学毕业设计 (论文)用纸 7 2.3 Android 系统平台架构 对操作系统而言,必须做到设计合理、层次分明。同时还需考虑整个系统的结构要 聚耦适当,Android 系统是基于Linux 内核的,因此还具备开源的特性,以符合开发人 员共同工作。 Android 操作系统的体系结构可分为四层,由上到下依次是应用程序、应用程序框 架、核心类库和Linux 内核,其中核心类库层还包括Android 运行时环境。系统架构如 图 2-1 所示。 图2-1 Android 系统平台架构 参照图2-1,对系统各部分主要组件作以下描述。 2.3.1 Linux 内核 Android 的核心系统服务依赖于Linux 内核,如安全性、内存管理、进程管理、 网络协议栈和驱动模型。Linux 内核也同时作为硬件和软件栈之间的硬件抽象层 。 Android 基于 Linux 2.6 提供核心系统服务,例如:安全、内存管理、进程管理、网 络堆栈、驱动模型。Linux Kernel 也作为硬件和软件之间的抽象层,它隐藏具体硬件 细节而为上层提供统一的服务。 太原理工大学毕业设计 (论文)用纸 8 分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下 层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各 层各司其职,各 层提供固定的 SAP(Service Access Point),专业点可以说是高内聚、低耦合。 2.3.2 Android 程序库 Android 包括一个被Android 系统中各种不同组件所使用的C/C+集库。该库通过 Android 应用程序框架为开发者提供服务。 以下是一些核心库: 1)Surface Manager:管理显示子系统,并且为多个应用程序提供2D 和 3D 图层的 无缝融合。 2)Media Framework:基于OpenCORE 的多媒体框架,支持多种常用的音频、视频 格式文件的回放和录制,同时支持静态图像文件。 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 虚拟机。其中核心库提 供了 Java 语言核心库所能使用的绝大部分功能,而虚拟机则负责运行Android 应用程 序。 每个 Android 应用程序都运行在单独的一个Dalvik 虚拟机内,因此Dalvik 专门针 对同时高效地运行多个虚拟机进行了优化,因此Android 系统可以方便地实现对应用程 序进行隔离。 实际上,JVM 虚拟机运行的是Java 字节码(通常是.class 文件),但Dalvik 运行 的是其专有的dex(Dalvik Executable)文件。JVM 直接从.class 文件或JAR 包中加载 字节码然后运行;而Dalvik 则无法直接从.class 文件或JAR 包中加载字节码,它需要 对 DX 工具将应用程序的所有.class 文件编译成.dex 文件,Dalvik 则运行该.dex 文件。 2.3.4 应用程序框架 应用程序框架可以说是一个应用程序的核心,是所有参与开发的程序员共同使用 和遵守的约定,大家在其约定上进行必要的扩展,但程序始终保持主体结构的一致性。 其作用是让程序保持清晰和一目了然,在满足不同需求的同时又不互相影响。 Android 系统提供给应用开发者的本身就是一个框架,所有的应用开发都必须遵 守这个框架的原则。 太原理工大学毕业设计 (论文)用纸 9 当我们开发Android 应用程序时,就是面向底层的应用程序框架进行的。从这个意 义上看,Android 系统上的应用程序时完全平等的,不管是Android 系统提供的程序, 还是普通开发者提供的程序,他们都可以访问Android 提供的API 框架。 Android 应用程序框架提供了大量API 供开发者使用。应用程序框架可作为应用程 序开发的基础之外,也是软件复用的重要手段,任何一个应用程序都可发布它的功能模 块-只要发布时遵守了框架的约定,那么其他应用程序也可使用这个功能模块。 2.3.5 应用程序 Android 系统发布时,会同一系列核心应用程序和常用程序一起发布,如经常 电子 邮件客户端、SMS 程序、日历、地图、浏览器、联系人等、这些应用程序都是用Java 编 写的。 2.4 Android 系统的四大核心组件 Android 四大基本组件分别是Activity,Service 服务,Content Provider 内容提 供者,BroadcastReceiver 广播接收器。不是每一个Android 应用程序都必须有这四部 分组成。 2.4.1 Activity 及其生命周期 Activity 通俗地讲就是用户界面,它有其自身的生命周期。一个应用程序通常包 含多个Activity,它们可以互相切换。Activity 的使用需要在mainfest 文件中进行声 明。 一个 Activity 通常是一个单独的屏幕,Activity 生命周期是指 Activity 从启动到销毁的过程。系统中的 Activity 被一个 Activity 栈所管理。当一个新的 Activity 启动时,将被放置到栈顶,成为运行中的 Activity,前一个 Activity 保留 在栈中,不再放到前台,直到运行中的 Activity 退出为止。 Activity 表现为四种状态: 活动状态(Active or Running):也称为运行状态,处于 Activity 栈顶,在 用户界面中最上层,完全能被用户看到,能够与用户进行交互; 暂停状态(Paused):Activity 失去焦点,Activity 界面被部分遮挡,该 Activity 不再处于用户界面的最上层,且不能够与用户进行交互。一个暂停状态的 Activity 依然保持活力(保持所有的状态,成员信息,与窗口管理器保持连接),但 是在系统内存不够用的时候将被杀掉; 停止状态(Stopped):Activity 在界面上完全不能被用户看到,也就是说这 个 Activity 被其他 Activity 全部遮挡,但它依然保持所有状态和成员信息,只是它 不再可见,它的窗口被隐藏; 非活动状态(Killed):当系统内存需要被用在其他地方的时候,一个停止状 态的 Activity 被杀掉。 如果一个 Activity 是 Paused 或者 Stopped 状态时可以被恢复,也可以被删除。 一个被删除(杀掉)的 Activity 如果需要重新恢复就需要重启。 太原理工大学毕业设计 (论文)用纸 10 Activity 的生命周期由几个常用的覆写方法来实现,分别是: onCreate(),onStart(),onResume(),onPause(),onStop(),onDestroy(),onRestart ()七个方法。 整个生命周期,从 onCreate()开始到 onDestroy()结束。Activity 在 onCreate()设置所有的“全局”状态,在 onDestory()释放所有的资源。例如: 某个 Activity 有一个在后台运行的线程,用于从网络下载数据,则该 Activity 可以 在 onCreate()中创建线程,在 onDestory()中停止线程。 可见的生命周期,从 onStart()开始到 onStop()结束。在这段时间,可以看 到 Activity 在屏幕上,尽管有可能不在前台,不能和用户交互。在这两个接口之间, 需要保持显示给用户的 UI 数据和资源等,例如:可以在 onStart 中注册一个 Intent Receiver 来监听数据变化导致 UI 的变动,当不再需要显示时候,可以在 onStop() 中注销它。onStart(),onStop()都可以被多次调用,因为 Activity 随时可以在 可见和隐藏之间转换。 前台的生命周期,从 onResume()开始到 onPause()结束。在这段时间里,该 Activity 处于所有 Activity 的最前面,和用户进行交互。Activity 可以经常在 resumed 和 paused 状态之间切换,例如:当设备准备休眠时,当一个 Activity 处理 结果被分发时,当一个新的 Intent 被分发时。 Activity 的整个生命周期都定义在下面的接口方法中,所有方法都可以被重载。 所有的 Activity 都需要实现 onCreate()去初始化设置,大部分 Activity 需要实现 onPause()去提交更改过的数据,当前大部分的 Activity 也需要实现 onFreeze() 接口,以便恢复在 onCreate()里面设置的状态。 图 2-2 展示了上述Activity 生命周期以及Activity 在这些方法过程之中经历的状 态改变。 太原理工大学毕业设计 (论文)用纸 11 图 2-2 Activity 生命周期过程及历经的状态改变 2.4.2 Service 及其生命周期 Service 不像 Activity 那样,它不直接与用户进行交互,没有用户界面,能长期 在后台运行,且比Activity 具有更高的优先级,在系统资源紧张时不会轻易被Android 系统终止。每个服务都是从Service 基类中派生的。 service 可以通过两种方式创建:startService()和 bindService(). startService():一般用于在后台上传文件或者下载文件等,不跟其他组件通信, 就算启动它的应用被销毁了,它仍然会欢快的在后台执行,直到完成任务的时候自刎 (自己调用stopSelf())或者被其他人下黑手(调用 stopService(). bindService():允许其他组件跟它进行通信,允许多个客户端绑定到同一个 service 上,当所有的客户端都解除绑定后,该service 就销毁了。 service 的生命周期主要是跟这4 个回调函数相关,onCreate()、onStartCommend()、 onBind()、onDestory()。如下图所示: 太原理工大学毕业设计 (论文)用纸 12 图 2-3 Service 生命周期过程及历经的状态改变 2.4.3 BroadCastRececiver 介绍 Android 系统中有各式各样的广播,当系统 /应用程序运行时便会向Android 注册各 种广播,主要有两种注册类型:第一种是非常驻型广播,此类广播会伴随应该程序的生 命周期;第二种是常驻型广播,此类广播不会随应用程序是否关闭而存在,只要有广播 就会被系统调用自动运行。Android 系统接收到广播后便会对广播进行判断,并找出所 需事件,然后向不同应用程序注册事件。 一个广播接收者有一个回调方法: void onReceive(Context curContext, Intent broadcastMsg)。当一个广播消息 到达接收者是,Android 调用它的onReceive()方法并传递给它包含消息的Intent 对象。 广播接收者被认为仅当它执行这个方法时是活跃的。当onReceive()返回后,它是不活 跃的。 有一个活跃的广播接收者的进程是受保护的,不会被杀死。但是系统可以在任何时候杀 死仅有不活跃组件的进程,当占用的内存别的进程需要时。 这带来一个问题,当一个广播消息的响应时费时的,因此应该在独立的线程中做这些事, 远离用户界面其它组件运行的主线程。如果onReceive()衍生线程然后返回,整个进程, 太原理工大学毕业设计 (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 饮料合作加盟合同范本
- 公司聘用文秘合同范本
- 隔热夹芯板采购合同范本
- 公司代签合同范本
- 香港公司股权合同范本
- 基地鱼塘租售合同范本
- 新款合同范本模板
- 衣物袋采购合同范本
- 仓库旧料回收合同范本
- 车辆安全协议合同范本
- 2022年江苏省春季高考数学试卷
- XXX加油站风险分级管控台账
- 甘12J8 屋面标准图集
- 购买设备合同
- GB/T 28288-2012足部防护足趾保护包头和防刺穿垫
- GB/T 19666-2019阻燃和耐火电线电缆或光缆通则
- GA/T 1241-2015法庭科学四甲基联苯胺显现血手印技术规范
- 小学和初中科学教学衔接
- 《循证医学》治疗性研究证据的评价和应用
- “李可中医药学术流派论治厥阴病”-课件
- 通用技术作品设计报告
评论
0/150
提交评论