Android万历计算机毕业设计论文.doc

上传人:文库蛋蛋多 文档编号:2393623 上传时间:2023-02-17 格式:DOC 页数:57 大小:1.30MB
返回 下载 相关 举报
Android万历计算机毕业设计论文.doc_第1页
第1页 / 共57页
Android万历计算机毕业设计论文.doc_第2页
第2页 / 共57页
Android万历计算机毕业设计论文.doc_第3页
第3页 / 共57页
Android万历计算机毕业设计论文.doc_第4页
第4页 / 共57页
Android万历计算机毕业设计论文.doc_第5页
第5页 / 共57页
点击查看更多>>
资源描述

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

1、基于Android的万年历的设计与开发摘 要 随着移动互联网的高速发展,人们无时无刻不在利用移动终端,智能手机已经普遍进入广大人们的手中,人们可以随时随地的利用移动手机来查看信息,上网等,当然也迫切需要随时随地的掌握日期,节日,日程安排等重要事情,Android版电子万年历应运而生。鉴于现在市场上Android版万年历的功能简单、操作不方便、广告太多等众多因素,需开发一种功能强大、操作方便、实用性强的万年历软件。本课题开发的万年历利用Android开发平台采用Java+Android语言,通过万年历的算法实现阳历和阴历的查看功能,通过Webservice技术实现天气预报查看功能,通过Sqlit

2、e技术实现星座、周公解梦等的查看功能,通过Service和Notification实现提醒功能。关键词:Android平台;万年历算法;WebService技术;SqliteAndroid-based calendar design and developmentAbstract With the hight-speed development of the mobile internet.The smart phone has been generally into the hands of the majority of the people.People can use mobile p

3、hones to check the information, surf the internet and etc at any time and any place.Of course,there is an urgent need to master festival,the schedule and other important things at any time and at any place.So the electronic calendar of the andorid version came into being.In the view of the Android c

4、alendars function on the market is not very powerful or not easy to operate, or also has too many advertisements, So we need to develop a powerful ,easy to operate and practical calendar software.This System uses the Android development platform and Java+Android language,by using the calendar algori

5、thms to implement the function to see the gregorian calendar and lunar calendar, using webservice technology to implement the function of the Weather Forecast, using Sqlite technology to implement the function to see the Constellation and the Duke Dream, using the Service and Notification to impleme

6、nt the function of the Real-time alerting.Keywords: Android platform; Calendar algorithms;Webservice technology; Sqlite 目 录摘要iAbstractii1 绪论11.1 研究的背景和意义11.2 研究内容11.3 预期目标12 关键性技术22.1 SQLite技术22.1.1 SQLite介绍22.1.2 Sqlite支持的SQL语句22.1.3 Sqlite的特征22.1.4 SQLite注意事项22.2 WebService技术32.2.1 WebService简介32.

7、2.2 WebService技术和规则32.3 Android平台42.3.1 Android平台简介42.3.2 Android应用程序框架42.3.3 系统运行库52.3.4 系统内核62.3.5 APK文件结构62.3.6 中介软件72.3.7 安全权限机制72.3.8 应用组件82.4 XML技术92.4.1 XML简介92.4.2 XML格式特征92.4.3 XML解析方式102.4.4 XML的应用123 需求分析133.1 系统需求133.2 技术需求133.3 维护需求133.4 安全需求133.5 系统可行性分析133.5.1 经济上的可行性133.5.2 技术上的可行性13

8、3.5.3 社会条件方面的可行性143.5.4 市场条件方面的可行性144 概要设计154.1 设计思想154.2 功能需求154.2.1 系统业务用例分析154.2.2 Android万年历需要实现以下功能154.3 功能模块设计165 详细设计与系统实现185.1 界面设计与实现185.2 菜单界面的实现195.3 功能实现流程205.3.1 第一次进入程序205.3.2 用户操作215.4 阳历算法225.5 阴历算法235.6 节日查看界面255.7 日期查看界面265.8 生理健康界面275.9 记事本界面285.10 天气预报界面305.11 周公解梦界面325.12 星座界面34

9、6 系统测试和运行366.1 测试概述366.1.1 测试的意义366.1.2 编写目的366.1.3 测试范围366.2 测试内容366.2.1 内容与功能检查366.2.2 容错性和易用性测试366.3 具体测试366.3.1 测试过程366.3.2 测试结果37结束语38参考文献39致 谢40外文原文41中文翻译481 绪论1.1 研究的背景和意义Android是一种以Linux为基础的开放源码的操作系统,主要使用于便携设备。Android操作系统最初由AndyRubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上1

10、。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2011年11月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为58%2。Android作为一款开放式操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开发式操作系统。进入互联网时代之后,随着人们对信息需求量,准确性的加大。人们对时间,日期的准确性有更大的需求,传统的日历已经不能满足人们的要求,电子万年历应运而生,大大

11、方便了人们对时间日期的掌握,使每个用户都能随时在电脑旁边掌握日期,节日等信息。但是随着进入21世纪移动互联网高速发展的时代,人们无时无刻不在利用移动终端,智能机已经普遍进入广大人们手中,人们可以随时随地的利用移动手机来查看信息,上网等,当然也迫切需要随时随地的掌握日期、节日,日程安排等重要事情,手机版电子万年历应运而生。本课题涉及的万年历是一款专注于为用户提供时间管理的工具软件,兼备中国传统阴历、节日、星座运势、实时提醒、日记等信息,方便您生活的每一天。几乎每一个Android手机上都安装一款。Android操作系统作为目前最火的手机操作系统,就目前Android的市场占有率来说,本款软件是很

12、有市场应用价值的。1.2 研究内容为了实现Android平台万年历,本文主要围绕Android平台开发应用程序的整体思路、设计、开发、实现等流程做了详细的介绍,并对中国万年历算法做了简单的介绍。1.3 预期目标1.功能强大:除了万年历的基本功能(查看日期)外,还实现了农历阴历互转、年份干支、日期查询、天气预报、历史朝代、日志、提醒等功能。2.操作方便:对于Android手机用户来说,本软件使用方便简单,功能使用用户一看便知,大大减少了用户的操作强度。2 关键性技术2.1 SQLite技术2.1.1 SQLite介绍SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计

13、目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快3。SQLite第一个Alpha版本诞生于2000年5月. 至今已经有14个年头,SQLite也迎来了一个版本 SQLite 3已经发布。2.1.2 Sqlite支持的SQL语句SQLite虽然很小巧,但是支持的SQL语句

14、不会逊色于其他开源数据库,它支持的SQL包括: ATTACH DATABASE 、BEGIN TRANSACTION 、comment 、COMMIT TRANSACTION 、COPY 、CREATE INDEX 、CREATE TABLE 、CREATE TRIGGER 、CREATE VIEW 、DELETE 、DETACH DATABASE 、DROP INDEX 、DROP TABLE 、DROP TRIGGER 、DROP VIEW 、END TRANSACTION 、EXPLAIN 、expression 、INSERT 、ON CONFLICT clause 、PRAGMA 、

15、REPLACE 、ROLLBACK TRANSACTION 、SELECT 、UPDATE。2.1.3 Sqlite的特征1.ACID事务。2.零配置无需安装和管理配置。3.储存在单一磁盘文件中的一个完整的数据库。4.数据库文件可以在不同字节顺序的机器间自由的共享。5.支持数据库大小至2TB。6.足够小,大致3万行C代码,250K。7.比一些流行的数据库在大部分普通数据库操作要快。8.简单,轻松的API。9.包含TCL绑定,同时通过Wrapper支持其他语言的绑定。10.良好注释的源代码,并且有着90%以上的测试覆盖率。11.独立: 没有额外依赖。12.Source完全的Open,你可以用于任

16、何用途,包括出售它。 13.支持多种开发语言,C, PHP, Perl, Java, C#, Python。2.1.4 SQLite注意事项在确定是否在应用程序中使用 SQLite 之前,应该考虑以下几种情况:目前没有可用于 SQLite 的网络服务器。从应用程序运行位于其他计算机上的 SQLite 的惟一方法是从网络共享运行。这样会导致一些问题,像 UNIX 和 Windows 网络共享都存在文件锁定问题。还有由于与访问网络共享相关的延迟而带来的性能下降问题。SQLite 只提供数据库级的锁定。虽然有一些增加并发的技巧,但是,如果应用程序需要的是表级别或行级别的锁定,那么 DBMS 能够更好

17、地满足您的需求。正如前面提到的,SQLite 可以支持每天大约 100,00 次点击率的 Web 站点 并且,在某些情况下,可以处理 10 倍于此的通信量。对于具有高通信量或需要支持庞大浏览人数的 Web 站点来说,应该考虑使用 DBMS。SQLite 没有用户帐户概念,而是根据文件系统确定所有数据库的权限。这会使强制执行存储配额发生困难,强制执行用户许可变得不可能。SQLite 支持多数(但不是全部)的 SQL92 标准。不受支持的一些功能包括完全触发器支持和可写视图。如果您感到其中的任何限制会影响您的应用程序,那么您应该考虑使用完善的 DBMS。如果您可以解除这些限制问题,并且对快速灵活的

18、嵌入式开源数据库引擎很感兴趣,则应重点考虑使用 SQLite。2.2 WebService技术2.2.1 WebService简介WebService是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。Web Service是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问Web Service,通过Web Service内部执行得到所需结果.Web Service可以执行从简单的请求到复杂

19、商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务系统功能需求。2.2.2 WebService技术和规则1.XML:可扩展的标记语言(标准通用标记语言下的一个子集)是Web Service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。XML是由万维网协会(W3C)创建,W3C制定的XML SchemaXSD定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。Web Service平台是用XSD来作为数据类型系统的。当你用某种语言如VB. NET或C#来构造一个Web Service时

20、,为了符合Web Service标准,所有你使用的数据类型都必须被转换为XSD类型。如想让它使用在不同平台和不同软件的不同组织间传递,还需要用某种东西将它包装起来。这种东西就是一种协议,如 SOAP。2.SOAP:即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML(标准通用标记语言下的一个子集)编码信息的轻量级协议。它有三个主要方面:XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行远程过程调用(RPC)的约定。SOAP可以运行在任何其他传输协议上。例如,你可以使用 SMTP,即因特网电子邮

21、件协议来传递SOAP消息,这可是很有诱惑力的。在传输层之间的头是不同的,但XML有效负载保持相同。Web Service 希望实现不同的系统之间能够用“软件-软件对话”的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的状态,实现“基于Web无缝集成”的目标。3.WSDL:Web Service描述语言WSDL就是用机器能阅读的方式提供的一个正式描述文档而基于XML(标准通用标记语言下的一个子集)的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。4.UDDI:的目的是为电子商务建立标准;UDDI是一套基于W

22、eb的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。2.3 Android平台2.3.1 Android平台简介Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬

23、件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。12013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。2014第一季度Android

24、平台已占所有移动广告流量来源的42.8%,首度超越iOS。但运营收入不及iOS。2.3.2 Android应用程序框架Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序、日历、地图、浏览器,联系人管理程序等7。所有的应用程序都是使用Java语言编写的。开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(需要遵循框架的安全性限制)。同样,该应用程序重用机制也使玩家可以方便的替换程序组件。Android应用程序背后都隐藏了许多

25、服务其中包括:丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons),甚至可嵌入的Web浏览器。内容提供器(Content Providers),当一个应用程序想要访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据时都需要内容提供器的服务。资源管理器(Resource Manager),它可以提供如本地字符串、图形和布局文件( layout files )非代码资源的访问8。通知管理器 (Notification Manager),使得应用程序可以在状态栏中显示自定义的提示信

26、息。活动管理器( Activity Manager),是Android开发中的重要的服务系统,用来管理应用程序生命周期并提供常用的导航回退功能。Android 有丰富的功能,因此很容易与桌面操作系统混淆。Android 是一个分层的环境,构建在 Linux 内核的基础上,它包括丰富的功能。UI 子系统包括:窗口,视图。用于显示一些常见组件(例如编辑框、列表和下拉列表)的小部件。Android 包括一个构建在 WebKit 基础上的可嵌入浏览器,iPhone 的 Mobile Safari 浏览器同样也是以 WebKit 为基础。Android 提供多种连接选项,包括 WiFi、蓝牙和通过蜂窝(

27、cellular)连接的无线数据传输(例如 GPRS、EDGE 和 3G)9。Android 应用程序中一项流行的技术是链接到 Google 地图,以便在应用程序中显示地址。Android 软件栈还提供对基于位置的服务(例如 GPS)和加速计的支持,不过并不是所有的 Android 设备都配备了必需的硬件。另外还有摄像支持。过去,移动应用程序努力向桌面应用程序看齐的两个领域分别是图形/媒体和数据存储方法。Android 通过提供对 2D 和 3D 图形的内置支持,包括 OpenGL 库,解决了图形方面的挑战。由于 Android 平台包括流行的开源 SQLite 数据库,因此缓解了数据存储的负

28、担。 Android 软件层次结构。如图 2-1所示。图2-1 Android软件层次结构 应用程序架构。如前所述,Android 运行在 Linux 内核上。Android 应用程序是用 Java 编程语言编写的,它们在一个虚拟机(VM)中运行。需要注意的是,这个 VM 并非您想象中的 JVM,而是 Dalvik Virtual Machine,这是一种开源技术。每个 Android 应用程序都在 Dalvik VM 的一个实例中运行,这个实例驻留在一个由 Linux 内核管理的进程中。2.3.3 系统运行库(1) 程序库Android包含一些C/C+库,这些库能被Android系统中不同的

29、组件使用。它们通过Android应用程序框架为开发者提供服务,以下是一些核心库:系统C库:一个从BSD继承来的标准C系统函数库(libc),它是专门为基于embedded linux的设备定制的。媒体库:基于PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4、H.264、MP3、AAC、AMR、JPG,PNG。Surface Manager:对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。LibWebCore:一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。SG

30、L:底层的2D图形引擎。3D libraries:基于OpenGLES1.0 APIs实现;该库可以使用硬件3D加速或者使用高度优化的3D软加速10。FreeType:位图(bitmap)和矢量(vector)字体显示。SQLite:一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。(2) Android运行库Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik 被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik虚拟机执行的Dalvik可执行文

31、件(.dex),该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中的“dx”工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。2.3.4 系统内核Android 是运行于Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以Bionic 取代Glibc、以Skia 取代Cairo、

32、再以opencore取代FFmpeg等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 Userspace,使得Linux driver 与 Linux kernel彻底分开。Bionic/Libc/Kernel/ 并非标准的Kernel header files。Android 的 Kernel header 是利用工具由 Linux Kernel header 所产生的,这样做是为了保留常数、数据结构与宏。Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Manageme

33、nt),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。下载Android源码之前,先要安装其构建工具 Repo来初始化源码。Repo 是 Android 用来辅助Git工作的一个工具。2.3.5 APK文件结构APK是安卓应用的后缀,是AndroidPackage的缩写,即Android安装包(apk)。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。apk文件和sis一样,把android sdk编译的工程打包成一个安

34、装程序文件,格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。APK文件结构1. META-INF (注:Jar文件中常可以看到);2. res (注:存放资源文件的目录) ;3. AndroidManifest.xml (注:程序全局配置文件) ;4. classes.dex (注:Dalvik字节码);5. resources.arsc (注:编译后的二进制资源文件)。Android在运行一

35、个程序时首先需要UnZip,然后类似Symbian那样直接执行安装,和Windows Mobile中的PE文件有区别,这样做对于程序的保密性和可靠性不是很高,通过dexdump命令可以反编译,但这样做符合发展规律,微软的 Windows Gadgets或者说WPF也采用了这种构架方式。在Android平台中dalvik vm的执行文件被打包为apk格式,最终运行时加载器会解压然后获取编译后androidmanifest.xml文件中的permission分支相关的安全访问,但仍然存在很多安全限制,如果你将apk文件传到/system/app文件夹下会发现执行是不受限制的。最终我们平时安装的文件

36、可能不是这个文件夹,而在android rom中系统的apk文件默认会放入这个文件夹,它们拥有着root权限。2.3.6 中介软件操作系统与应用程序的沟通桥梁,应用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同时包含了Webkit,所谓的Webkit 就是Apple Safari 浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。Android采用OpenCORE作为基

37、础多媒体框架。Open CORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。Android 使用skia 为核心图形引擎,搭配OpenGL/ES。skia与Linux Cairo功能相当,但相较于Linux Cairo, skia 功能还只是雏形的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,Skia 也是Google Chrome 的图形引擎。

38、Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。Android的中间层多以Java 实现,并且采用特殊的Dalvik 虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”(Register Based)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。Dalvik虚拟机可以有多个实例(Instance), 每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik 虚拟机并非

39、运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。2.3.7 安全权限机制Android本身是一个权限分立的操作系统。在这类操作系统中,每个应用都以唯一的一个系统识别身份运行(Linux用户ID与群组ID)。系统的各部分也分别使用各自独立的识别方式。Linux就是这样将应用与应用,应用与系统隔离开。系统更多的安全功能通过权限机制提供。权限可以限制某个特定进程的特定操作,也可以限制每个URI权限对特定数据段的访问。Android安全架构的核心设计思想是,在默认设置下,所有应用都没有权限对其他应用、系统或用户进行较大影响的操作。这其中包括读写用户隐私数据(联系人或电子邮件

40、),读写其他应用文件,访问网络或阻止设备待机等。安装应用时,在检查程序签名提及的权限,且经过用户确认后,软件包安装器会给予应用权限。从用户角度看,一款Android应用通常会要求如下的权限:拨打电话、发送短信或彩信、修改/删除SD卡上的内容、读取联系人的信息、读取日程信的息,写入日程数据、读取电话状态或识别码、精确的(基于GPS)地理位置、模糊的(基于网络获取)地理位置、创建蓝牙连接、对互联网的完全访问、查看网络状态,查看WiFi状态、避免手机待机、修改系统全局设置、读取同步设定、开机自启动、重启其他应用、终止运行中的应用、设定偏好应用、震动控制、拍摄图片等。一款应用应该根据自身提供的功能,要

41、求合理的权限。用户也可以分析一款应用所需权限,从而简单判定这款应用是否安全。如一款应用是不带广告的单机版,也没有任何附加的内容需要下载,那么它要求访问网络的权限就比较可疑。2.3.8 应用组件Android开发四大组件分别是:活动(Activity): 用于表现功能。服务(Service): 后台运行服务,不提供界面呈现。广播接收器(BroadcastReceiver):用于接收广播。内容提供商(Content Provider): 支持在多个应用中存储和读取数据,相当于数据库。活动:Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity 之中,Activi

42、ty可以算是开发者遇到的最频繁,也是Android 当中最基本的模块之一。在Android的程序当中,Activity 一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么Activity就相当于一个网页。在Activity 当中可以添加一些Button、Check box 等控件。可以看到Activity 概念和网页的概念相当类似。一般一个Android 应用是由多个Activity 组成的。这多个Activity 之间 可以进行相互跳转,例如,按下一个Button按钮后,可能会跳转到其他的Activity。和网页跳转稍微有些不一样的是,Activity 之间的跳转有可能返回值,例如,从A

43、ctivity A 跳转到Activity B,那么当Activity B 运行结束的时候,有可能会给Activity A 一个返回值。这样做在很多时候是相当方便的。当打开一个新的屏幕时,之前一个屏幕会被置为暂停状态,并且压入历史堆栈中。用户可以通过回退操作返回到以前打开过的屏幕。可以选择性的移除一些没有必要保留的屏幕,因为Android会把每个应用的开始到当前的每个屏幕保存在堆栈中。服务:Service是android 系统中的一种组件,它跟Activity 的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service 是没有界面的长生命周期的代码。Servic

44、e是一种程序,它可以运行很长时间,但是它却没有用户界面。这么说有点枯燥,来看个例子。打开一个音乐播放器的程序,这个时候若想上网了,那么,打开Android浏览器,这个时候虽然已经进入了浏览器这个程序,但是,歌曲播放并没有停止,而是在后台继续一首接着一首的播放。其实这个播放就是由播放音乐的Service进行控制。当然这个播放音乐的Service也可以停止,例如,当播放列表里边的歌曲都结束,或者用户按下了停止音乐播放的快捷键等。Service 可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD 卡上文件的变化,再或者在后台记录地

45、理信息位置的改变等等,总之服务嘛,总是藏在后头的。开启Service有两种方式:(1) Context.startService():Service会经历onCreate - onStart(如果Service还没有运行,则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次 );StopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用StopService的话,Service会一直在后台运行。该Service的调用者再启动起来后可以

46、通过stopService关闭Service。 注意,多次调用Context.startservice()不会嵌套(即使会有相应的onStart()方法被调用),所以无论同一个服务被启动了多少次,一旦调用Context.stopService()或者StopSelf(),他都会被停止。补充说明:传递给StartService(0的Intent对象会传递给onStart()方法。调用顺序为:onCreate - onStart(可多次调用) - onDestroy。(2) Context.bindService():Service会经历onCreate() -onBind(),onBind将返回

47、给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind - onDestroyed相应退出,所谓绑定在一起就共存亡了。广播接收器:在Android 中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver 是对发送出来的Broadcast进行过滤接受并响应的一类组件。可以使用BroadcastReceiver 来让应用对一个外部的事件做出响应。这

48、是非常有意思的,例如,当电话呼入这个外部事件到来的时候,可以利用BroadcastReceiver 进行处理。例如,当下载一个程序成功完成的时候,仍然可以利用BroadcastReceiver 进行处理。BroadcastReceiver不能生成UI,也就是说对于用户来说不是透明的,用户是看不到的。BroadcastReceiver通过NotificationManager 来通知用户这些事情发生了。BroadcastReceiver 既可以在AndroidManifest.xml 中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册。只要是注册了,当事件来临的时候

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号