《基于android的移动OA的开发与设计.docx》由会员分享,可在线阅读,更多相关《基于android的移动OA的开发与设计.docx(75页珍藏版)》请在三一办公上搜索。
1、分类号 (宋体五号字) 密级 UDC 编号 硕士研究生学位论文题 目 基于android的移动OA系统分析与设计 学院(所、中心) 软件学院 专业名称 软件工程 研究生姓名 陈健 学号 R201000685 导师姓名 廖鸿志 职称 教授 2012年 10 月扉页:声 明本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得云南大学或其他教育机构的学位或证明而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。研究生签名: 日 期:
2、 论文使用和授权说明本人完全了解云南大学有关保留、使用学位论文的规定,即:学校有权保留并向国家有关部门或机构送交学位论文和论文电子版;允许论文被查阅或借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文;授权学校将学位论文的全部或部分内容编入有关数据库进行检索。 (保密的论文在解密后应遵循此规定)研究生签名: 导师签名: 日 期: 摘 要由于移动OA允许您在任何时间任何地点以任何方式处理任何事,实现对企业内部的有效管理,因此与传统的OA系统对比,移动办公既可以实现传统OA系统所有功能,同时也可以实现一些原有办公系统无法实现的功能,实现与企业协同管理系统无缝结合,实现
3、对企业所有业务的自由掌控。开放性手机平台Android近些年来迅速发展,使用Android平台的智能手机大量问市,获得了市场的广泛推宠和好评,因此基于Android平台的所应用程序成为一个热门的计算机软件研究方向。在对Android系统平台进行了大量分析与研究的基础上,提出利用Android智能手机平台的高效与智能的特点来实现OA系统的研究课题,它对提高企业办公效率将有重要意义和实际的应用价值。本文的主要工作是完成一个基于Android移动OA系统的需求分析、总体设计、概要设计、编码实现、测试发布的工作,论文主要内容如下:其次,在作者实际工作中和调研基础上,对典型移动OA系统通过建模语言工具来
4、分析和建模,对面向对象的移动OA需求进行了分析,并给出了移动OA系统的架构和基础功能;再次,运用基于面向对象的分析与设计方法,如系统对象模型分析、系统模块划分、MVC模式的系统架构设计等,提出了一个基于Android平台的微型OA系统的设计方案;最后,给出了基于Android平台的OA系统的详细设计和实现方法,主要包括各个功能模块的实现过程和在模拟器中得出的运行结果,并针对实现OA系统所涉及到的关键设计进行详细的讨论。关键词:Android平台;移动平台;微型;OA系统;设计方案AbstractOpen Android mobile device platform developed rapi
5、dly in recent years,a large number of smart phones of using this platform have been published,were widely praised by the market,Android platform-based application development has gradually become a hot research of compter software.OA(office automation)system development so far,has entered the mobile
6、 age,the documents,address book,calendar,file management,notification and other functionson on the original OA system to migrate to mobile phones gradually,OA system in the near future will allow users anywhere handheld office can be foreseed. Based on making a large number of researches and analysi
7、s on the Android platform,author propose the topic of using of the Android smart phone platform efficient and intelligent features to achieve the OA system,it improve office efficiency will be important and practical value.Main job of this thesis is that to be completed and Android-based micro-OA sy
8、stems needs analysis,overall design,outline design,code implementation ,testing and release,the main contents of the thesis are as follows: First, a brief analysis of the Android platform architecture,focuses on the basics of the Android platform,the basic components of Android framework,API of Andr
9、oid platform,and some of the key technologies of achieve OA system on Android platform; Secondly,the authors conducted a lot of research work on the typical OA system for mobile object-oriented requirements analysis,through modeling language tools to analyze and building model,and get the movement O
10、A systems architecture and basic functions; Again to use of object-oriented analysis and design methods including the system object model analysis,system module division,MVC model of system architecture design, propose the Solutions of OA system base on Android platform; Finally,to give of the Andro
11、id-based micro-OA systems the detailed design and implementation ways, including concrete realization of the various functional modules and simulator run results ,and for the system toachieve the key technologies involved in detailed discussions.Key Words: Android platform;Pocket office;OA system;de
12、sing目 录第一章绪论11.1选题背景及意义11.2研究现状与发展趋势31.3国内外研究现状31.3.1 国内研究现状31.3.2 国外研究现状41.4论文的主要研究工作51.5论文章节结构6第二章Android平台的体系结构分析72.1 Android平台基础知识72.1.1 Android平台简介72.1.2 Android的系统架构72.1.3 Android应用程序类型分析92.1.4 Android活动的生命周期102.1.5 Android服务的生命周期132.2 课程相关的Android技术介绍152.2.1 Android用户界面简介152.2.2 XML解析技术简介172.
13、2.3 Android与服务器端的数据交互技术简介172.3 本章小结20第三章 系统的需求分析与建模203.1 需求分析的概念203.2 系统的需求分析203.2.1 需求分析流程203.2.2 系统设计原则213.2.3 系统设计目标213.2.4 系统的功能性需求223.2.5.系统的非功能性需求263.2.6 系统运行环境需求263.3 本章小结27第四章 基于Android平台的微型OA系统设计274.1 MVC设计模式简介274.2 系统总体架构设计284.2.1 系统总体架构图284.2.2 系统实现流程架构294.3 系统功能设计304.3.1 系统功能模块概述304.3.2
14、OA手机客户端功能模块设计304.3.2.1 个人办公管理模块设计314.3.2.2 公文管理模块设计324.3.2.3 工作流转模块设计334.3.2.4 辅助管理模块设计344.3.3 OA服务端功能模块设计344.3.3.1 基础服务支撑管理模块设计354.3.3.2 业务解析运行引擎模块设计364.3.3.3 终端访问安全管理模块设计374.3.3.4 系统管理模块设计374.3.3.5 接口管理管理模块设计374.4 数据库简要设计384.5 本章小结43第五章 基于Android平台的微型OA系统实现435.1开发平台的搭建445.1.1 系统开发环境445.1. Android运
15、行环境445.关键技术的实现465.2.1从服务器获取XML格式的信息465.3.主要功能部分模块的实现与测试535.3.1系统登录535.3.2个人办公的实现545.3.3公文管理的实现555.3.4通讯录的实现565.4本章小结56第六章 结论57一、论文工作总结57二、今后研究工作展望57参考文献1致 谢3第一章绪论1.1选题背景及意义经过多年的发展,第三代数字通信(3G)技术获得了广泛的发展,它为移动终端用户带来了更快的数据传输速度。随着3G网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。因此,移动终端的应用软件和需要的服务将会有很大的发展空间。Google为此于20
16、07年11月推出了一个专为移动服务设计的软件平台-Android。智能手机是一种在手机内集成了相应开放式操作系统的手机,因为可以安装第三方软件,所以智能手机有丰富的功能,如网络视频、移动聊天、位置服务、手机阅读、邮件处理等等。近年来,我国的智能手机市场发展非常迅猛,据媒体预测,到2012年我国智能手机用户将会达到8000万以上1。2012年各种智能手机操作系统所占市场份额如图1-1所示。图1-1 2012年手机操作系统市场份额图Android最大特点在于它是一个开放的体系结构,具有非常好的开发和调试环境,而且还支持各种可扩展的用户体验,Android里面具有非常丰富的图形系统,对多媒体的支持功
17、能和非常强大的浏览器Android平台的开放性等特点既能促进技术(包括平台自身)的创新,又有助于降低开发成本,还可以使运营商能非常方便制定特色化的产品,因此,它具有很大的市场发展潜力。该平台由操作系统、中间件、用户界面和应用软件组成。它采用软件堆层(Software Stack,又名软件叠层)的架构,主要分为三部分。底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机Virtual-Machine,由C+开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分。不存在任何以往阻碍移动产业创新
18、的专有权障碍,号称是首个移动终端打造的真正开放和完整的移动软件。Google通过与软、硬件开发商、设备制造商、电信运营商等其他有关各方面结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。Android作为Google企业战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。全球为数众多的移动电话用户正在使用各种基于Android的电话。由于企业信息化应用已渗透到企业日常管理以及员工交流与协作的各个方面,员工的生活与工作已离不开信息化系统。员工希望能及时了解到企业最新的信息、对需要紧急处理的公文或邮件能够及时答
19、复,他们希望在会议、出差、候机、候车或差旅途中能以方便的方式打开文件(邮件)予以处理,不受场地或电源的限制;他们也希望能在日常活动时,随意查阅、批复相关的信息,避免打开计算机等繁复的操作。显然,满足这些需求的最便捷手段莫过于移动电话。手机作为个人应用最广泛的平台,未来将作业个人信息终端承载个人和企业商务交流的巨大作用,通过手机办公系统搭建扩展的无线业务应用平台,逐步将手机办公进行应用深化和外部扩展,则可以提早占领市场,拓展增值业务,提升市场占有率和回报率。办公自动化没有统一的定义,我国专家在第一次全国办公自动化规划讨论会上提出办公自动化的定义为:利用先进的科学技术,使部分办公业务活动物化于人以
20、外的各种现代化办公设备中,由人与技术设备构成服务于某种办公业务目的人一机信息处理系统。办公自动化是近年来随着计算机科学发展而提出来的概念,办公自动化英文原称Office Automation,缩写为OA.办公自动化系统一般指实现办公室内事务性业务的自动化,而办公自动化则包括更广泛的意义,凡是在传统的办公室中采用各种新技术、新机器、新设备从事办公业务,都属于办公自动化的领域。本文提出了如何在已有的PC办公自化应用系统基础上,把办公应用扩展到使用Android系统的智能手机上来的研究课题。重点研究了移动OA架构与无线网络互联技术,分析了Android智能手机上实现OA系统涉及的技术,设计和实现了一
21、个基于Android平台的微型OA应用系统。这些研究内容对今后移动办公系统的进一步研究将有较好的实际参考价值。1.2研究现状与发展趋势随着时代发展和单位管理水平的进步,各单位对办公自化提出更多、更高的要求,因此这将导致各单位将会继续在办公自动化系统的建设和电信运营商方面投入更多的资源来不断的完善办公自动化系统,从而规范单位内部管理,进而提高工作效率,提升服务水平。宁波大红鹰学院以提高服务和工作效率为前提,采用数学化、便携化、网络化的终端支撑,为此,对移动信息化问题有必要作进一步的探讨,如何提高工作质量,如何提高工作效率已成为当务之急。移动信息化的出现,使得信息化摆脱了对固定办公环境,固定工作时
22、间,固定电脑设备和网络的依赖,将信息化无缝延展到每个人手中,使得信息化从此可以随时随地的跟随着人走。它是对原有信息化的补充,也是对信息化本身的发展和跃变。1.3国内外研究现状1.3.1 国内研究现状我国政府的办公自动化是80年代中期才发展起来的。从1985年全国召开了第一次办公自动化规划会议,对我国办公自动化建设进行了规划。1986年5月在国务院电子振兴领导小组办公自动化专家组第一次专家会议上,定义了办公自动化系统功能层次和结构模式。随后国务院率先开发了”中南海办公自动化系统”。虽然我国办公自动化起步较晚,但发展非常迅速,办公自动化建设从无到有、从小到大、从简单到复杂、从低级到高级只用了十几年
23、发展历程。1992年,为了推进政府机关的自动化程度,在政府机关普及推广计算机的使用,国务院办公室下发文件国务院办公厅关于建设全国政府行政首脑机关办公决策服务系统的通知(1992)25)。该文件下发以后,在国务院办公厅统一指导下,经过各地区、各部门近十年的积极努力,全国政府系统信息化建设取得了长足的发展。我国的信息化通过早期推行办公自动化(OA)系统及上世纪末的政府上网工程等发展阶段,为办公自动化打下了一定的基础,取得了不小的进步,但各地各级单位的发展很不均衡,存在沿海地区明显比内陆地区好,内陆地区又明显比偏远地区好,从总体上讲,信息化的速度和水平还不能适应国民经济和社会发展的要求,还存在一些突
24、出问题,如:缺乏统一规划和统一标准,各部门信息存在信息孤岛,资源难以共享;某些领导不会使用电脑,害怕使用电脑,固守传统工作方式;常常重系统而忽视业务流程优化;重建设,轻运行维护等。解决这些问题,需要从体制上入手,政府、企业内部一些有卓识远见的领导开始重视这项工作。关于移动办公方面,目前国内发达地区的单位,己经在这方面先行一步,因为他们积累了大量的应用系统的开发经验,并且本身需要实施开展现场巡查、调查、打印等业务,存在将工作流程向移动终端延伸的实际需求。根据实际用户的需求的不同,“移动办公”大致可以分为客户端方式和wap方式两种,这两种方式的优缺点如下:客户端方式,功能非常强大,对于掌上终端的要
25、求也较高,一般需要以智能手机为终端载体,它通过在公司内部部署一台用以手机和电脑网络信息对接服务器,使得手机可以和企业的办公系统、财务系统、ERP系统等等几乎所有的企业级业务和管理系统联动,其业务主要面向大中型企业和政府部门。Wap方式,无须装载软件,借助运营商提供的移动化服务就可以直接进行移动化的办公。而后一种方式则能实现一些常规的企业办公功能,它不需要企业架构任何服务器,也不需要在手机上安装软件,实现包括如“公文流转、日程管理、企业通讯录、手机硬盘、即时通信、企业资讯”等等在内的常规企业办公功育旨。随着国内信息化的发展,对内部办公自动化的及时处理也已经成为影响单位办公效率的重要环节。将办公自
26、动化系统向移动终端延伸的实际需求也越来越迫切。1.3.2 国外研究现状国外办公自动化开始于50年代左右在美国和日本首先提出,最初只是具有电子数据处理的簿记功能,紧接着在60年代被管理信息系统(MIS)所替代,一直到70年代后期才形成涉及多种信息技术的新型综合学科一办公自动化(OA)。国外的办公自动化起步较早,1984年,格雷斯委员会在调查的基础上建议在不同级别的政府部门包括总统办公室设立CIO(美国首席信息官)职位,标志着美国办公自动化已经基本完善和制度化。以美国为例,美国使用电子数据交换(EDI)相关的应用的企业就已经约有2.4万家。发展到现在,几乎所有的美国大公司都已经实现了办公自动化,甚
27、至一些跨国公司还实现了虚拟办公室的应用。如美国的思科(CISCO)公司把运营和管理成功地迁移到了互联网上,旗下的全部产品(交换机、路由器以及其它的网络互联设备)都建立了虚拟的订货系统,思科在全球范围内的绝大多数订单都是通过网络来处理。欧美等发达国家的OA应用系统主要呈现下列特点:(1) 平台化程序较高,能整合企业中现有的ERP系统、MIS系统、财务系统等模块中存储的经营管理业务数据。各个子系统的界面风格统一,业务流程联系紧密、信息处理顺畅。使用统一的用户帐户可以实现各系统间文档流传、信息发布、核查审批等应用,使得各个系统无缝集成,协同工作,成为一个大的办公平台。(2) 智能化程序较高,OA系统
28、帮助用户做一些基本的商业智能(Business Intelligence,简写为BI)分析工作。智能化高的OA系统可以对海量数据进行分类和分析,向用户提供决策支持、知识挖掘、商业智能等服务,这对用户快速地从庞大的信息量中发现一些潜在商业规律与商业机会会有很大的帮助,可以显著地提高企业的运营效率。例如,在微软的Office2007版本中开始尝试向用户提供了一些基本的BI应用,如:通过使用不同颜色标记显示不同大小的数据、使用智能化的状态图型来描述数据等。(3) 网络化应用程序较高,和国内一些OA系统中尝试集成网络办公功能不同,国外一些知名软件厂商已经开始对OA系统与网络的无缝连接展开探索,如Goo
29、gle公司推出了在线处理的常用文档和电子表格的应用服务,在本地电脑上未安装任何办公应用软件情况下,用户就可以以WEB方式进行网上办公;同时,微软也推出了Office Mobile 2010,可以通过安装在智能手机上的Office软件中的功能选项,直接选择上因特网进行办公操作,实现在移动设备上进行移动办公。1.4论文的主要研究工作本文的目标是基于Android手机平台以及OA(办公自动化)技术,设计和实现一个高效的移动办公系统。本文的研究工作主要集中在移动OA系统的手机客户端的设计和实现两方面。主要研究内容包括: (1)分析Android手机平台框架并研究移动OA开发涉及的相关技术 首先了解An
30、droid系统的历史,然后分析Android操作系统的架构组成,接着研究在Android平台上进行软件开发必须了解的基础知识,然后研究如何在Windows系统环境下搭建Android平台的开发的环境,最后研究了Android平台上的移动OA系统实现的关键技术和程序调试技术。(2)使用面向对象相关技术对移动OA系统进行分析和设计 根据移动传统OA系统的特点,先使用基于面向对象思想的建模工具进行对象分析,设计出一个针对宁波大红鹰学院的移动办公解决方案,再结合Android平台的特点,设计出一个基于Android智能手机平台的微型OA系统。(3) 实现基于Android手机平台的微型OA系统并对其进
31、行模拟测试 针对系统各个子功能模块进行编码实现,并在模拟器上进行测试,以验证系统的正确性和合理性。拟解决的关键技术问题如下:(1) 移动OA系统的体系结构设计;(2) 通过无线网络数据传输的方式,实现应用服务器上的数据与客户手机端之间的交互;(3) 基于Android平台应用程序的编程实现技术。1.5论文章节结构本论文的内容组织与结构安排如下:第一章是全文的概述。简要介绍了课题的研究背景,国内外相关技术的研究动态和论文的主要研究内容。第二章是Android平台的体系结构分析。主要论述了Android平台基本框架体系,还介绍了用户界面设计技术、XML解析技术以及Android与服务器端数据交互技
32、术。第三章是系统的分析与建模。介绍了需求分析的常用方法,使用UML语言,对移动OA系统进行需求分析,并详细描述系统所需的功能模块,为后续章节提供理论依据。第四章是基于Android平台微型OA系统的设计。使用MVC模式设计系统架构,建立系统的对象模型,另外简单介绍了本系统的数据库的设计。第五章是基于Android平台微型OA系统的实现。主要包括系统各个子功能模块的实现、在模拟器中得出的运行结果,并针对系统实现涉及的关键技术进行详细的讨论经。最后是总结与展望。对所完成的系统系统进行总结,提出了尚存在的不足之处,提出了今后需要进一步完善的工作。第二章Android平台的体系结构分析2.1 Andr
33、oid平台基础知识2.1.1 Android平台简介2007年11月5日,Google公司发布了一款名为Android(中文意思为机器人)的操作系统。这个操作系统是基于Linux内核的开源手机操作系统,与WindowsMobile、Symbian等手机操作系统处在同一级别,是主流的手机操作系统之一。Android系统在Linux核心应用的基础上,向广大程序开发人员提供了各种函数库和完整的应用程序框架。此外,Android系统还在Linux核心上提供了一种名叫Dalvik的Java 应用程序运行环境,与Sun公司J2ME的Java虚拟机不同,Dalvik是由Google公司独创的专门针对Andr
34、oid平台进行优化的Java虚拟机。为了让全世界的应用程序开发人员学习和参与Android平台应用程序的开发,Google公司还提供了完全免费的跨平台(包括:Windows、Mac OS X、Linux等平台)的开发工具包(SDK)。这些特性使得Android系统大受市场欢迎,很快取得了手机操作系统中领先地位。2.1.2 Android的系统架构本节将简单介绍Android系统的框架结构组成,如图2-1所示。从图2-1上看,Android系统体系架构自上而下分为四层,分别是应用层(Application)、应用框架层(Application Framework)、系统运行库层(Librarie
35、s)、Linux内核层(Linux Kernel)。l 应用层(Application)这层主要组成是在Dalvil虚拟机上的各种应用程序。Dalvil虚拟机与J2ME使用的虚拟机不同,是专门为Android设计的、基于寄存器的Java虚拟机,使得使用Java语言开发的应用程序得以更高效地运行。应用层上的应用程序很多,例如:日历、地图、电话、拨号、时钟、浏览器、短信、联系人管理等。l 应用框架层(Application Framework) 图2-1 Android的系统框架图 开发人员可以和Linux核心应用一样,拥有访问整个框架API(应用程序接口)的权限。应用框架层主要由视图(View)
36、、内容提供器(Content Providers)、资源管理器(Resource Manager)、通知管理器(Notification Manager)、活动管理器(Activity manager)等部分组成。l 系统运行库层(Libraries) 系统运行库主要是由一种用C/C+语言编写的、名叫NDK的开发库组成。因为Java语言本身是不能直接访问硬件的,必须要通过NDK才可以实现硬件的访问。NDK主要包括C语言标准库(Libc)、多媒体(Media Framework)、OpenGL ES、SQLite、Webkit、Dalvik虚拟机等。这些开发库通过Android应用框架展示给开发
37、人员,直接给应用框架层提供支持。该层除了NDK之外,还包括了一个核心库(Core Libraries)。核心库提供了JAVA语言编程时可能使用到的大部分核心类库。Dalvik虚拟机也在这个层中。每一个Android应用程序都可以认为拥有独立的Dalvik虚拟机实例,可以在程序自身的进程中运行,而且允许一个设备同时运行多个Dalvik虚拟机,使用Android应用程序得以高效地被执行。Dalvik虚拟机可执行文件的格式是*.dex,这种格式的文件专门针对内存较小、处理器速度比较慢的手机平台进行了优化。l Linux内核层(Linux Kernel) Linux内核层主要包括驱动模型、内在管理、进
38、程管理、网络协议栈等组件,Linux内核层也可以认为是软件和硬件之间的抽象层,可以在隐藏具体硬件细节的情况下为上面的几个层提供统一的服务。目前Android使用版本为2.6的Linux内核提供核心系统服务。2.1.3 Android应用程序类型分析 Android架构里定义了四种应用程序结构,分别是活动(Activity)、服务(Service)、广播和Intent接收器(Broadcast and Intent Receivers)、内容提供器(Content Provider),这四种结构构建了几乎所有的Android应用程序。l 活动(Activity)Android系统中的活动类似于w
39、indows操作系统中独立应用程序。活动都是由一些可执行代码组成,用户或者系统需要时活动就会被启动。活动可以与用户进行交互,还可以通过查询(queries)和intent组件向其它活动或者服务获取数据和服务。活动通常要负责屏幕的显示,每一个活动一般都有一个对应的界面,如果活动的不在处于活动状态,系统可以将它结束以提高智能手机内存的利用率。l 服务(Service) Android系统中的服务与windows系统或者服务器中的后台程序(daemons)类似,它同样也是由一些可执行代码构成,它们启动以后会一直在后台运行,直到智能手机关闭为止。一般情况下服务是没有用户交互界面的。l 广播和Inten
40、t接收器(Broadcast and Intent Receivers) 广播和Intent接收器(Broadcast and Intent Receivers)用于处理应用程序发生的服务请求。广播接收器用于处理系统级别的事件消息,这些消息可能是由系统本身发生的,例如手机电量不足,消息也可能来自于系统在中正在运行的其他应用程序。一个活动或者服务如果想向其他应用程序提供服务,一般通过Intent接收器来实现。Intent接收器是一段可执行代码,当其他服务/活动发出服务或者数据请求是就会响应。如果要发送请求,客户端要先创建一个intent对象,然后将这个对象提交到Android系统,由系统来决定使
41、用哪个应用程序来处理这个对象。这两种接收器程序和服务程序一样,也是没有用户交互界面的。l 内容提供器(Content Provider)内容提供器(Content Provider)主要功能是向其他的活动或者服务提供数据服务。内容提供器通过使用一种名叫URI(Uniform Resource Identifier,统一资源标识符)的接口向其他应用程序提供数据服务。2.1.4 Android活动的生命周期图2-2Android活动的生命周期图下面的对在活动的整个生命周期中的每个方法进行详细的描述。l void onCreate(Bundle savedInstanceState)当Activit
42、y被第首次加载时执行。我们新启动一个程序的时候其主窗体的onCreate事件就会被执行。如果Activity被销毁后(onDestroy后),再重新加载进Task时,其onCreate事件也会被重新执行。注意这里的参数 savedInstanceState(Bundle类型是一个键值对集合,大家可以看成是.Net中的Dictionary)是一个很有用的设计,由于前面已经说到的手机应用的特殊性,一个Activity很可能被强制交换到后台(交换到后台就是指该窗体不再对用户可见,但实际上又还是存在于某个Task中的,比如一个新的Activity压入了当前的Task从而“遮盖”住了当前的 Activi
43、ty,或者用户按了Home键回到桌面,又或者其他重要事件发生导致新的Activity出现在当前Activity之上,比如来电界面),而如果此后用户在一段时间内没有重新查看该窗体(Android通过长按Home键可以选择最近运行的6个程序,或者用户直接再次点击程序的运行图标,如果窗体所在的Task和进程没有被系统销毁,则不用重新加载Process, Task和Task中的Activity,直接重新显示Task顶部的Activity,这就称之为重新查看某个程序的窗体),该窗体连同其所在的Task和Process则可能已经被系统自动销毁了,此时如果再次查看该窗体,则要重新执行 onCreate事件初
44、始化窗体。而这个时候我们可能希望用户继续上次打开该窗体时的操作状态进行操作,而不是一切从头开始。例如用户在编辑短信时突然来电,接完电话后用户又去做了一些其他的事情,比如保存来电号码到联系人,而没有立即回到短信编辑界面,导致了短信编辑界面被销毁,当用户重新进入短信程序时他可能希望继续上次的编辑。这种情况我们就可以覆写Activity的void onSaveInstanceState(Bundle outState)事件,通过向outState中写入一些我们需要在窗体销毁前保存的状态或信息,这样在窗体重新执行onCreate的时候,则会通过 savedInstanceState将之前保存的信息传递
45、进来,此时我们就可以有选择的利用这些信息来初始化窗体,而不是一切从头开始。l void onStart()onCreate事件之后执行。或者当前窗体被交换到后台后,在用户重新查看窗体前已经过去了一段时间,窗体已经执行了onStop事件,但是窗体和其所在进程并没有被销毁,用户再次重新查看窗体时会执行onRestart事件,之后会跳过onCreate事件,直接执行窗体的onStart事件。l void onResume()onStart事件之后执行。或者当前窗体被交换到后台后,在用户重新查看窗体时,窗体还没有被销毁,也没有执行过onStop事件(窗体还继续存在于Task中),则会跳过窗体的onCr
46、eate和onStart事件,直接执行onResume事件。l void onPause()窗体被交换到后台时执行。l void onStop()onPause事件之后执行。如果一段时间内用户还没有重新查看该窗体,则该窗体的onStop事件将会被执行;或者用户直接按了Back键,将该窗体从当前Task中移除,也会执行该窗体的onStop事件。l void onRestart()onStop事件执行后,如果窗体和其所在的进程没有被系统销毁,此时用户又重新查看该窗体,则会执行窗体的onRestart事件,onRestart事件后会跳过窗体的onCreate事件直接执行onStart事件。l voi
47、d onDestroy()Activity被销毁的时候执行。在窗体的onStop事件之后,如果没有再次查看该窗体,Activity则会被销毁。2.1.5 Android服务的生命周期Android Service生命周期与Activity生命周期是相似的,但是也存在一些细节上也存在着重要的不同:图2-3是Android服务(Service)的生命周期示意图。图2-3Android服务的生命周期图l onCreate和onStart是不同的 通过从客户端调用Context.startService(Intent)方法我们可以启动一个服务。如果这个服务还没有运行,Android将启动它并且在onCreate方法之后调用它的on