Android音乐播放器毕业论文.doc

上传人:仙人指路1688 文档编号:2393608 上传时间:2023-02-17 格式:DOC 页数:28 大小:586.50KB
返回 下载 相关 举报
Android音乐播放器毕业论文.doc_第1页
第1页 / 共28页
Android音乐播放器毕业论文.doc_第2页
第2页 / 共28页
Android音乐播放器毕业论文.doc_第3页
第3页 / 共28页
Android音乐播放器毕业论文.doc_第4页
第4页 / 共28页
Android音乐播放器毕业论文.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《Android音乐播放器毕业论文.doc》由会员分享,可在线阅读,更多相关《Android音乐播放器毕业论文.doc(28页珍藏版)》请在三一办公上搜索。

1、摘 要3G时代已经慢慢的融入了我们的日常生活,随着国家的通信政策以及各大运营商的宣传的影响,3G手机已经随处可见,面对全球信息、技术空前高速发展,信息高速化发展更是社会进步的一个标志。在全球信息化的今天,手机已经成为人们日常生活中不可缺少的一部分,尤其是在电子产品日新月异的今天,我们在平时随处可见的电子产品中,手机无疑是一个最大的用户集,而各大厂商智能手机则依旧是电子市场的一颗耀眼的明星。其中的代表作有诺Nokia的塞班系统,摩托罗拉的Linux系统,但是其中异军突起的仍然是Google的Andriod系统以其开放的源代码和方便简洁的操作必然是未来智能手机领域的领头羊。这次毕业设计我们选择音乐

2、播放器一定会使我们在以后的工作中提供更多的机会。随着新技术的不断开发与应用,近年来Java技术发展十分迅速,一个以Java应用为主的新技术革命浪潮正在蓬勃兴起。而基于Andriod的软件开发是一个前景很大的技术,通过这次毕业设计,能使我们从对软件的设计中体会到实际中软件开发的过程,提高我们的专业能力,最终能够获得很强的专业知识。关键词:Android音乐播放器,Android平台,Java技术Abstract3G era has gradually integrated into our daily life, with the countrys communication policy as

3、 well as the major carriers of sensitization to the effects of3G mobile phone, can be seen everywhere, in the face of the global information technology, an unprecedented rapid development, the information high speed development is a symbol of social advancement. In the global information technology

4、today, mobile phone has become indispensable in the daily life of a part, especially in electronic products change rapidly today, we usually can be seen everywhere in the electronic products, mobile phone is undoubtedly one of the largest user sets, and major manufacturers of intelligent mobile phon

5、e will still be electronic market a dazzling star. The representative of Connaught Nokia Symbian, the Motorola Linux system, but which is still a new force suddenly rises. Google Andriod system for its open source code and convenient and simple operation is the future leader in the field of intellig

6、ent mobile phone. This time graduate the design we choose based on the Andriod mobile phone games will make our work in the future to provide more opportunities.With the new technology development and application, in recent years the development of Java technology is very rapid, a Java application o

7、f tide of new technology revolution is booming. Andriod based software development is a great prospect of technology, through this graduation design, can make us from on the software design of the actual software development process, improve our professional skills, can finally obtain strong profess

8、ional knowledge.Key words: Android mobile phone; the Android platform; 目录摘 要1Abstract2目录3第1章 Android概述51.1 Android的前世今生51.1.1 Android的产生51.1.2 Android的发展61.2 Android的平台架构61.3内核层71.4 Android Runtime和函数库层71.4.1函数库71.4.2 Android Runtime81.5 Dalvik 虚拟机91.6 Android的进程管理机制111.7 应用程序框架层121.8 应用程序层132 Andro

9、id的应用132.1 Android应用的组成132.2 Activity132.3 Intent Receiver132.4 Service142.5 Content Provider142.6 AndroidManifest.xml14第2章 需求分析、模块设计172.1 需求分析172.1.1安卓音乐播放器172.1.2 Android系统概述182.2 程序的模块结构182.2.1 程序的建立18第3章 系统采用关键技术24第4章 总结26参考文献27致 谢28第1章 Android概述1.1 Android的前世今生1.1.1 Android的产生手机,没有一个人会感到陌生。近几年来

10、一个名词一直影响着许许多多的手机用户,它就是智能手机。智能手机凭借其强大的功能吸引住了许多用户的眼球,因为有了广大的用户基础,智能手机也风靡一时。说起智能手机,除了他有一颗强大的CPU和其他一些较高配置的硬件外,其真正的智能还要归功于其不可缺少的智能操作系统。当今,智能手机所搭载的智能手机操作系统平台大致如下:(1)Symbian OS。搭载在具有广泛群众基础的Nokia手机上,并以此占据了智能手机的半壁江山,其主要的智能平台为大部分诺基亚手机搭载的的S60系列和索尼爱立信手机搭载的UIQ系列;(2)Windows Mobile。Microsoft在桌面系统获得成功之后,觊觎手机的巨大市场开发

11、的智能手机系统,因其界面和桌面windows系统较为接近和其强大的微软后台,成为国内市场占有率紧跟Symbian之后成为国人比较喜欢的操作系统;(3)Mac OS X(iPhone OS)。苹果一直都是个性和时尚的代名词,受广大中高层次手机用户的喜欢。iPhone,以其酷炫的UI和独特的操作方式,给传统手机带来一场革命,同时也给Symbian和Windows Mobile带来巨大冲击的;(4)Blackberry。以商务应用为主,在国外尤其是欧美等地,受到商务人士欢迎的Black Barry占据了近一半的无线商务电子邮件业务市场,就连美国总统奥巴马也使用该品牌的手机。但是在国内还是受到一些基础

12、设施的制约,所以在国内市场不是太好;(5)Palm OS。专门为PDA开发,一度占据了90%的PDA市场的份额,虽然其并不专门针对于手机设计,但是以其优秀性和对移动设备的支持同样使其能够成为一个优秀的手机操作系统。(6)Linux。对于Linux系统,想必很多人都不会太陌生,桌面系统中以其开源的特性,赢得了不少用户的喜爱。智能手机平台的Linux同样具有源代码开放、软件授权费用低、应用开发人才资源丰富等优点,便于开发个人和行业应用。但是因为其平台上的应用少而不被国人所接受。(7)Google Android。自2007年推出,2008年第一部搭载Android系统的G1上市至今不到短短三年时间

13、,他已被许多人接受并且认可及欢迎。虽然如今的智能手机系统市场仍被Symbian、Windows Mobile的占领,但是iPhone的革命以后,以及后起之秀Android的推出,在将来,智能手机市场将发生翻天覆地的变化。1.1.2 Android的发展2008年9月22日,美国运营商德国T-Mobile在纽约正式发布第一款Android手机T-Mobile G1。该款手机为台湾宏达电代工制造,是世界上第一部使用Android操作系统的手机,支持WCDMA/HSPA网络,理论下载速率7.2Mbps,并支持Wi-Fi。2009年9月初,摩托罗拉坐镇主场在旧金山举办的Giga OM 2009大会上携

14、手T-Mobile正式发布了旗下首款搭载Android操作系统的智能手机-MOTO CLIQ ,在沉寂许久后的首次爆发吸引了全球无数用户的目光。如果说T-Mobile G1的出世开辟了Android领域先河的话,那么摩托罗拉CLIQ的发布则更多的被视为昔日手机霸主的强势回归!2009年10月28日正式发布了Android 2.0 智能手机操作系统,今天摩托罗拉和网络运营商Verizon共同宣布了首款采用Android 2.0的手机Droid2010年1月索尼爱立信首款Android机型X10上市2010年1月7日,Google在其美国总部正式向外界发布了旗下首款合作品牌手机Nexus One(

15、HTC G5),并同时开始对外发售。2010年7月9日,美国NDP集团调查显示,Android系统已占据了美国移动系统市场28%的份额。1.2 Android的平台架构图1-1 Android平台架构图从图1-1中明显的可以看出该系统从下到上包括Linux内核层、Libraries和运行时环境层、应用程序框架层、应用程序层四层结构。在Android的最下层的操作系统基于Linux2.6内核,往上的中间件包括Libraries和运行时环境层和应用程序框架层两个层次,最上层则是应用程序层。在Android构架中,可以很明显的看到,底层的Linux内核则采用的是C语言,libraries采用C或者C

16、+,但是应用程序层、应用程序框架层和运行时环境中的Android核心库采用Java语言编写,也就是说Android虽然底层用的是C或者C+但是应用程序的开发则用的是Java。Google采用这样的模式可能是因为相对于C或者C+,Java的开发周期更短的缘故,这样的话就能在短时间内为Android提供大量的应用软件。我们知道,作为一个智能手机平台,只有拥有了大量的源源不断的应用程序作为支持,才能受人们的欢迎,从而才能占领市场。之前Nokia的s60第三版就是一个很好的例子,因此Nokia S60v3的系统才被世人所熟知,并且曾经在智能手机行业占有很大的市场。而另一个例子就是Linux系统,在所有

17、操作系统中,稳定性和性能上能够和Linux抗衡的系统不多吧,但是在智能手机市场上为什么Linux却可以说是一败涂地,其原因也和其第三方应用少是脱不了关系的。1.3内核层Google Android 作为一个开源的操作系统其内核采用了同样开源的被业界认为是相当稳定的Linux作为其内核,其中Linux内核包括以下功能模块:安全(Security)、存储器管理(Memory Management)、进程管理(Process Management)、网络堆栈(Network Stack)、驱动程序模型(Driver Model)等,另外也在给其上层的软件和下层硬件间建立起一个抽象层(Abstract

18、ion Layer)。同时Android在Linux 2.6的内核上进行了一些增加和删改,使Linux更加适应ARM平台。增加了一个基于ARM构架的GoldFish平台作为虚拟机的虚拟CPU。增加了YAFFS2 FLASH系统文件,因此增加了对NANDFLASH支持。增加了Android相关的驱动。例如Android的IPC(进程间通信机制)binder,使用这个能使运行的进程为其他进程提供服务;Android的日志系统(Logger)和内存控制台(Ram_console);同时Google还重写了电源管理(Power)增加了新的共享方式Ashmem(匿名共享内存),多个应用程序可以这种方式共

19、享内存获取信息,为进程间提供大量共享内存,同时为内核提供回收和管理这个内存的机制。1.4 Android Runtime和函数库层1.4.1函数库Android 包含一些C/C+库,Android系统中的各种不同组件都能够使用这些库函数。这些库函数通过Android 应用程序框架为开发者提供服务。以下列举了一些库函数2:系统 C 库-一个专门为Embedded Linux设备定制的从BSD(Berkeley Software Distribution 伯克利软件套件)继承来的标准C系统函数库。媒体库 - 基于 PacketVideo公司的OpenCORE开发设计的。该库支持MPEG4, H.2

20、64, MP3, AAC, AMR, JPG, PNG多种常用的音频、视频格式的回放和录制,同时支持静态图像文件。Surface Manager - 对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合,提供如同类似iPhone的界面管理功能。LibWebCore - 一个支持Android浏览器和一个可嵌入的web视图的最新的web浏览器引擎。3D libraries - 基于OpenGL ES 1.0 APIs实现;该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D软加速。SQLite - 一个功能强劲的轻型关系型数据库引擎,Android中所有应用程序都可以调

21、用它。FreeType -位图(bitmap)和矢量(vector)字体显示。SGL - 底层的2D图形引擎。1.4.2 Android Runtime前面说到Android采用Java作为应用程序的开发语言,但是虽然使用的是Java语言,但是Google却没使用传统的Java Runtime来执行应用程序而是采用Android自己特有的Android Runtime。从Android 的系统构架图中可以清楚的看到,Android Runtime由Android函数库(Android Libraries)和Dalvik虚拟机组成3。 Android函数库中里包含了大部分Java程序语言所需要调

22、用的函数库,如data structure, network, utilities, file system等,其中很多代码是源于2005年的Apache Harmony项目。这样做的话能够使Android的虚拟机的类库与Java SE的类库有非常大的相似性,进而提高了Java SE类库的兼容性,最大限度的降低了一个程序员从Java平台开发到Andorid平台开发的难度,这样就降低了对Android开发的准备时间以及前期培训的费用,从而降低了Android应用程序开发的周期以及开发费用,这样的话短时间内就能让Google Android系统能够拥有大量的可执行的应用程序。另外,使用Apache

23、 Harmony 类库还能完全摆脱Sun的束缚而走上完全开源的Java之路,这样也奉行了Google对Android完全开源的原则。我们知道,对一个应用程序而言,都采用一个属于该应用程序的进程作为执行的载体,同样,对于Android也是,一个应用程序也是有一个属于它的进程。之前说过Android采用Java作为开发语言,在进程执行时应该会有一个Java虚拟机来为进程提供服务。在Android构架图中可以看到, 该系统采用的是一个叫做Dalvik的虚拟机。在前面的研究中我们了解到Dalvik虚拟机是一个Java 虚拟机,但是又和Java虚拟机有所不同。Dalvik虚拟机和传统的Java虚拟机所不

24、同之处的是传统的Java虚拟机是一个虚拟机来为不同应用程序提供服务,而Google自己开发的Dalvik虚拟机则是每一个Android应用程序都拥有一个其自身的Dalvik虚拟机,换句话说就是专属于每一个应用程序对应着一个Dalvik虚拟机而这个Dalvik虚拟机相当于一个执行个体。有关Dalvik虚拟机的内容将在下一个部分详细说明。Android函数库和Dalvik虚拟机组成了Android的运行时环境。从图中可以看到,Android Runtime和Libraries在同一层,建立在Linux Kernel 层之上,与Linux Kernel 没有交集,而是直接嵌套到libraries中。

25、我们之前说过,我们开发者可以调用C和C+的一些类库。其实就是这样Android Runtime与Libraries在同一层的设计并同时让Android Runtime 中的Android Libraries 引用libraries中的函数,而通过Dalvik虚拟机编译以后再调用这些函数做到上面所述的功能。也就是说其实Android Libraries中的函数只是libraries中的一些引用,当一个上层的应用程序调用Dalvik虚拟机中的核心库函数时,调用的其实只是一个函数名,并不是函数的具体实现,然后Dalvik虚拟机对该函数进行一些处理以后再通过Dalvik虚拟机调用libraries中的

26、相应函数,使之运行。换句话说就是,Android Libraries中的只是一个函数名,而真正代码的实现是libraries中的C或者C+代码。这样的好处就在于那些使用Java语言很难实现但是在C或者C+却能很容易实现的功能也能通过Java很容易等的实现。应用程序进程调用Runtime中Android函数库函数Android LibrariesAndroid RuntimeDalvik虚拟机交给Dalvik虚拟机进行处理LibrariesDalvik虚拟机调用Libraries中相应函数图2-2 应用程序调用Android Libraries中函数的过程1.5 Dalvik 虚拟机Dalvik

27、虚拟机是Android Runtime的一个组成部分,之所以要把他拿出来单独进行研究是因为,Dalvik虚拟机作为一个Java虚拟机,但它和普通的Java虚拟机有着一些不同。Google的工程师结合传统的Java 虚拟机,根据Android使用的平台一般为移动终端设备这样一个特点重新设计的虚拟机,这个虚拟机在移动终端设备上运行效率上明显比传统的Java 虚拟机要高许多。Dalvik虚拟机对内存的高效使用和在低速的CPU上表现出的高性能,确实让人们刮目相看。Android的上层应用程序虽然是用Java开发的,但是Dalvik虚拟机却和传统的Java虚拟机有着很大的区别,两者是不兼容的。首先,众所

28、周知在Java 中,所有的程序代码会被编译器编译成字节码(.class)文件,然后再打包成JAR文件,在执行时Java虚拟机就从JAR文件中提取出相应的字节码文件来执行。在Android中不再使用字节码文件而是一种Android所特有的DEX(Dalvik EXecutable)文件。DEX文件的生成还是需要经过生成字节码文件的这个过程的。使用Java语言编写好的Android程序代码,同样是先用Java编译器编译成为字节码文件,但是在这之后还需通过Google提供的一个DX工具将编译好的字节码转换成为DEX文件,然后Dalvik虚拟机通过DEX文件获得执行的代码。Google弃用字节码文件而

29、采用特有的DEX文件格式,这表明在Android实际运行中DEX文件格式相对于字节码文件格式应该有一些独特的优势。在Java中当一个应用程序定义了多个类后,通过编译则会产生相应数目的class字节码文件,在这些字节码文件中则必然会有冗余信息,例如一些相同的类库会冗余等。而DEX文件格式则是把这些class字节码文件整合到一个DEX文件中,使得字节码中的冗余减少了,同时使整体文件的尺寸也减少了。这样一来,对于同一个应用程序来说,相对于Java的字节码文件Android的DEX文件格式在I/O操作中所需要的时间也减少了,同时也减少了查找类所需要的时间。另外DEX使用等长的指令,这样的话能够使得DE

30、X文件尽量的简洁,从而提高了解析速度。通过上面的研究可以看出DEX文件格式是一种专为Dalvik虚拟机设计的压缩格式,该格式的高性能很适合内存和处理器速度有限的平台,从中可以看出Android是定位于嵌入式平台的一个操作系统。在这也体现出了Google给Android所定义的发展以及战略方向,如今移动平台的网络应用已经成为当前移动终端设备的发展方向,作为网络搜索的龙头大哥,Android就是其打入该移动平台网络应用的利器。Android应用开发和Dalvik虚拟机同样都使用Java开发语言,在应用程序开发好以后我们就需要将这个应用发布到Android移动终端设备。我们把一个开发好的应用的Jav

31、a代码经过编译以后生成.class的字节码文件,通过Android的DX工具转换成.DEX格式的文件,最后使用Android的appt打包工具把DEX文件,源文件以及AndroidManifest.xml文件组合成一个APK应用程序包,然后就能发布到移动终端设备上了。在APK应用程序程序包发布到移动终端设备后,应用程序运行前会对其中的DEX文件进行优化,优化后的文件格式称之为DEY,DEY文件被保存到缓存区域,虚拟机会在缓存中执行这些文件。其次,传统的Java 虚拟机是采用的是基于栈的设计,而Dalvik虚拟机则是基于寄存器设计的。基于栈设计的虚拟机能够使指令变得简单,不需要考虑程序中的源寄存

32、器和目的寄存器,只需要开辟栈空间而不需要为临时变量再开辟一个存储空间。另外基于栈设计的虚拟机移植性比基于寄存器设计的虚拟机要高很多,从组成原理和嵌入式操作系统课程中我们知道,一般的32位x86处理器的通用寄存器和32位的ARM的通用寄存器数目是不同的。虚拟机的设计中,为了执行的效率,有时会把这些寄存器一一映射到物理寄存器上,但是由于平台的不同,导致通用寄存器数量不同造成如果基于寄存器设计的虚拟机很难做到一一映射,执行效率就会大打折扣。而用基于栈的设计的话,就不存在这种问题,就很容易的分配寄存器。另外,基于栈设计的虚拟机采用的是零地址指令,这样的话指令形式比较紧凑。虽然基于栈结构的虚拟机有上述的

33、一些优点,但是为什么Google不采用基于栈的设计而采用基于寄存器结构设计Dalvik虚拟机呢。我个人觉得这是和Android所搭载的平台以及Google的战略有关的。首先,Android所搭载的主要平台为移动终端设备,如今的移动终端设备虽然性能比过去好多了,但是还是无法摆脱CPU处理能力低于桌面PC,存储资源有限的限制,在这样一个平台上使用基于栈的设计,在指令执行时必定会多出一个进栈(PUSH)和出栈(POP)的操作,那一定会影响指令执行的效率,这也是为什么我们在一些手机平台上运行Java程序时感到很慢的原因了。其次从Google对Dalvik虚拟机设计中采用的16个通用寄存器中可以看出An

34、droid的发展方向是基于ARM的硬件平台,这也和Google的战略方向相一致。虽然移植性降低了,但是使用二地址和三地址的指令,使得代码执行效率大大提高。另外,Dalvik虚拟机虽然没有采用现在流行虚拟机技术例如JIT(just in time,及时编译)技术,但是Dalvik虚拟机仍然是一个具有很高性能的虚拟机,在这不得不说一下,Dalvik虚拟机是一个设计相当不错的虚拟机。从Dalvik虚拟机的设计上我们可以看到Google打算用Android系统来冲击手机移动终端设备,想把其提供的服务扩展到移动设备上的战略。另外,Dalvik虚拟机的设计方面也有其独特的地方。它就是本着能够并发执行多个虚

35、拟机的设计思路来编写的。每一个Dalvik虚拟机实例对应于一个应用程序,同时这个虚拟机实例还都是一个进程空间。换句话说就是一个应用对应一个Dalvik虚拟机同时对应一个进程空间。不同的应用程序在不同的Dalvik虚拟机实例中运行,不同的Dalvik虚拟机又对应于不同的进程空间,加之不同的应用程序在Linux内核中以不同的Linux用户来执行,这样可以最大限度的保证应用程度的独立性和安全性。但Dalvik虚拟机要实现如线程机制,内存的分配和管理等操作的话,仍然需要底层操作系统的支持。另外Dalvik虚拟机线程机制中的一个线程对应于Linux中相应的一个线程,这样操作系统中的线程就能最大限度的为D

36、alvik虚拟机服务。通过这样的一个设计,Android的安全性大大提高了。说到Dalvik虚拟机,那就应该说说虚拟机中的一个特殊的虚拟机进程Zygote,之前说过一个Dalvik虚拟机对应一个进程空间。Zygote进程的功能有点类似于Linux中的1号进程,在Linux当系统启动时即产生1号进程,而其他的进程都由1号进程创建。在Dalvik虚拟机中Zygote进程fork出所有的虚拟机进程,每当系统提出执行一个Android应用时,需要一个Dalvik虚拟机是,Zygote就会fork出一个子进程来执行该应用。使用它可以加快系统的执行,因为Zygote进程在系统启动时就产生,已经完成了虚拟机

37、的初始化,预置类库的加载和初始化等等操作。当我们要执行一个应用而建立一个虚拟机时,只需让Zygote进程自身复制,这样就可以减少虚拟机初始化等操作的时间。另外,对于一些只读库所有虚拟机实例都和Zygote进程共享一块内存区,这样大大减少了对内存的开销。1.6 Android的进程管理机制Android虽然是基于Linux,但是它却采用了一种有别于Linux的一种管理机制。Linux在一个进程活动停止后就立刻结束该进程,而Android在一个进程活动停止后不会立刻结束该进程,并使该进程常驻内存中。直到系统资源不够需要更多内存或者当某个结束进程的事件发生时才将该进程结束。在Android中进程被分

38、成了前台进程(foreground)、可见进程(visible)、次要服务(secondary server)、后台进程(hidden)、内容供应节点(content provider)、空进程(empty)六种。前台进程是指一些系统进程和当前屏幕上正在显示的进程。比如说你打开Google地图查找路线,此时Google地图就是一个前台进程。可见进程则是那些虽然不在前台,但是用户依然可见的进程,如输入法,时钟等,这些进程虽然不是在前台运行的,但是其存在和我们的使用却是密切相关的,如果关闭了这些应用程序将给我们的使用带来非常大的不便次要服务是一些与系统功能息息相关的服务,如Google企业套件等。

39、后台进程,可以这么说后台进程就是一个前台进程被另一个前台进程替换后,进程没有结束,但是已经不再是前台进程的一个状态。在实际应用中就是当一个前台进程运行时按HOME键后的进程状态内容供应节点是没有程序实体,而是仅仅提供内容给别的程序使用的比如说日历节点空进程是没有任何东西在运行的进程,在一个程序退出后会有一个没有任何数据和代码在运行但是依然驻留在进程空间中的进程,该进程仅仅是作为一个能够提高该程序下次启动速度和记录程序历史记录的进程。Android在调度以上几种进程时使用了一个系统值作为系统对进程的一个评估,当要结束一个进程时该值的数值越大的进程被系统选中并结束的概率越大。一般的,前台进程的值为

40、0,这表明前台进程不可能被系统选中并结束。当进程进入后台以后,系统将会分配一个更高的值给该进程。相对于Linux的最近最早未使用的调度策略,Android在其基础上提供了一套独特的进程管理模块,他能让程序员使用脚本来对内存管理进行定制。比如当内存小于某个值时可以结束这个系统值大于另外一个值的进程,还可以当内存小某个值时结束上面六类进程中的一类(但顺序必须是空进程,内容供应节点,后台进程,次要服务,可见进程,最后才是前台进程)。根据这种特性 该系统值至少由两部分组成,一个是基值,另一个根据LRU(最近最久未使用)调度算法产生的一个值。对于以上说的六种进程应该分别有一系统给其赋予的值,其大小顺序应

41、该是空进程大于内容供应节点大于后台进程大于次要服务大于可见进程大于前台进程,而这个系统赋予的值则是基值。这样就能保证一些这六种进程总是当一种进程被结束完了以后另外一种进程才会被结束,同时只需要根据这个系统值就能轻易做到对内存管理的定制。1.7 应用程序框架层在Android系统构架图中可以看到,应用程序框架层是处于Android Runtime和库函数层于应用程序层之间,之前的叙述中知道,该层使用开发语言的是Java语言。应用程序框架是能够让开发者完全访问核心应用程序所使用的API(Application Programming Interface,应用程序编程接口),该框架能够让组件软件重用

42、的工做简单化。同时该框架中的任何一个功能模块都是等价的,任何一个应用程序都可以发布其功能模块,该功能模块可以替代当前的任意一个功能模块,但前提是必须遵循框架的安全限制4,另外,其他的任意应用程序能够使用这个发布的功能模块。这样的设计就使Android的构件重用率提高了。在每一个应用程序背后,应用程序框架为其提供了一系列的服务。这些服务包括:一个丰富并且可扩展的视图,通过这个视图我们可以使用它提供的一些包括按钮、文本框、列表、网格等甚至可嵌入的web浏览器的应用程序来构造我们的应用程序。内容提供器(content providers),有了内容提供器,一个应用程序可以共享它自己的数据或者访问另外

43、一个应用程序中共享的数据。资源管理器(resource manager),使用资源管理器,我们在应用程序中能够访问到一些如图形、布局文件等一些非代码资源。通知管理器(notification manager),给程序员提供了一个可以在程序状态栏中显示自定义提示信息的管理器。活动管理器(activity manager),提供常用导航功能用来管理应用程序生命周期的服务。通过这些应用程序框架层提供的服务程序员能够方便的开发一个界面优秀功能强大易于共享的的应用程序。1.8 应用程序层回到Android系统构架图中,应用程序层包括了如名片管理、Google maps、浏览器等本地应用程序(native

44、 apps),如QQ、MSN、QuickOffice等第三方应用程序(third part apps),以及developer apps。同样,该层的应用程序也都使用Java语言进行开发的。2 Android的应用2.1 Android应用的组成任何一个Android应用程序,都可由四个部分组成,这四个组成部分分别是Activity;Intent Receiver;Service;Content Provider5。对于一个应用程序来说,不一定这四个部分都需要。其中,Activity、Intent Receiver和Service是Android最基本的三个组件。其实,这四个部分全部或者其中几

45、个的相互协调工作组成了我们平时见到的应用程序。在Android中每个应用程序都需要一个XML配置文件AndroidManifestxml,该配置文件用于定义我们的应用程序组件和组件的功能以及一些必要条件等。因此当我们使用到任何一个组件时都需要在这个配置文件中进行登记,否则就算是你在代码中使用了这个组件,但是Android系统也是找不到该组件的。2.2 ActivityActivity是Android中最最基本的组件,实际应用中,通常就是一个单独的屏6,也就是一个运行在前台程序在某一时刻在屏幕中所能展示的全部内容就是一个Activity。每一个Activity都是继承于Activity基类的一个

46、子类,并且该Activity类由几个之前说过的应用程序框架提供的视图组成用户接口,实现对事件的响应。绝大部分的应用都会包含多个屏幕,例如名片管理的应用,一个屏用于显示所有的联系人,另一个屏用于显示其中某个联系人的详细信息,可能还会有用于分组信息或者用于系统设定的屏。对于这些,每一个屏都是一个Activity。当一个新的Activity执行以后,前一个Activity将暂停,并保存到系统历史堆栈当中,用户可以返回到历史堆栈中的上一个Activity。当该Activity不用时可以从历史堆栈中删除。2.3 Intent ReceiverIntent Receiver有的地方也叫做Broadcast

47、 Receiver。当你希望你的应用能够捕获一个外部事件并作出响应时,比如手机快没电了,收到一条新的信息等。这时你就可以使用一个Intent Receiver。因为Intent Receiver只是在一个你所关注的事件发生时,会给那些关注该事件的应用程序发送一个通知,所以它并不会生成一个UI。同样的Intent Receiver也需要在AndroidManifest.xml中进行注册。当一个你所关注的时间发生时,我们的应用不需要主动去调用intent receiver,系统会在一个合适的时候去调用我们的程序的。2.4 ServiceService是一段长生命周期的,没有用户界面的程序。我们举一

48、个播放器的例子,来说明Service程序。当一个播放器在前台运行时我们会看到应用程序提供的一个屏,也就是之前说的Activity,这个Activity提供给用户一些操作播放器如播放、停止、下一曲等操作以及显示一些歌曲和播放列表信息的功能。但是当播放器被切换到后台以后,所有的Activity都放到历史堆栈中了,而这时播放器任然继续进行播放,而当一首歌曲播放完了以后,还会根据播放列表中的信息播放下一首歌曲。完成这些功能的组件就是Service。当播放器的Activity利用Context.startService()方法启动一个Service后,这个播放器就能够在后台持续的播放音乐了。还有,对于一个Service组件,我们可以使用Context.bindService()连接到Service上,就能通过该Service提供的接口与之进行通信。2.5 Content ProviderContent Provider提供给你的应用程序与其他应用程序共享数据的一个功能。我

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号