第2章 Android项目结构分析 下载本文

电子教案

第2章 Android项目结构分析

教学目标:

课程重点:Android系统架构 应用程序基本组件 应用程序生命周期 资源

AndroidManifest.xml文件 课程难点:应用程序基本组件 应用程序生命周期 教学方法:理论讲解、案例实训 教学过程:

2.1 Android的系统架构

Android作为一个移动设备的开发平台,其系统架构和其他操作系统一样,采用了分层的架构。从架构图2-1看,android从高层到低层分为以下几个层次。

? 应用程序层(Application)

? 应用程序框架层(Application Framework) ? 各种库(Libraries)和运行环境(RunTime) ? linux核心层(OS)

图2-1 Android系统架构图

2.1.1应用程序(Application)

Android的应用程序通常涉及用户界面和用户交互,这类程序是用户实实在在能感觉到的。Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。

2.1.2应用程序框架(Application Framework)

普通开发者可以使用Android基本应用程序使用的系统API,Android 应用框架中的各个模块都可以被复用,各种服务也可以被复用,理解了这个机制,开发人员可以更好更轻松地开发出优秀的Android应用。开发过程中常用到的基本框架组件如下:

? 一组View(UI 组件),这些UI组件包括Button(按钮),EidtView(文本框),TextView(标签),List(列表)等等,灵活运用这些组件可以快速方便的创建良好的用户交互界面。

? Content Providers(内容提供者),听起来有点抽象,通俗的理解Content Provider 就是提供一种服务,通过这种服务应用程序之间可以实现数据的互相访问和共享,比如通讯录的存储就使用了这种服务,其它应用也可以访问通讯录中存储的联系人信息。

? Resource Manager 顾名思义就是资源管理,android中的资源很多,包括图片,用户界面(Layout xml),字体,颜色,UI组件的Id等等都可以称之为资源,这些丰富的资源,都是通过Resource Manager来统一进行管理。

? Notification Manager(消息通知管理),它在不影响用户正常操作和使用设备的时候在状态栏上提供消息的提示。比如有短信来的时候,android自动会将这个消息提示在状态栏上,用户可以及时的看到。

? Activity Manager(活动管理),Activity管理着应用程序的生命周期,并且控制着应用的导航,扮演控制器的角色。每个Activity类似于Windows应用中的一个wendow。一般的应用都是通过一个个Activity交互构成的。

? Window Manager(窗口管理),管理所有启动的窗口。

? Location Manager(位置管理),用来管理地图服务的相关功能。 ? Telephoney Manager(电话管理),用来管理有关的电话的相关功能。

? Package Manager(包管理),管理所有的安装在android系统内的应用程序。 2.1.3 各种库(Libraries)和运行环境(RunTime) 这部分内容开始涉及底层,开发普通的应用不会直接对这个层进行操作。以下是一些核心库。

? 系统C库(libc),一个从BSD集成来的标准C系统函数库(libc)它是专门为基于嵌入式Linux的设备定制的。

? 媒体库(Media Framework),基于PackeVideo OpenCore,该库支持多种常用的音频,视频格式以及回放和录制,同时支持静态图像文件。编码格式包括:MPEG4、H.264,MP3、AAC、AMR、JPG、PNG。

? Surface Manager 对显示子系统的管理,并且为多个应用提供2D,3D图层的无缝融合。

? WebKit,一个最新的web浏览器引擎,用来支持Andiroid浏览器或者嵌入的web视图。

? SGL, 底层的2D图形引擎。

? OPENGL|ES,基于OpenGL ES 1.0 APIs实现,该库可以使用硬件3D加速或者使用高度优化的3D软加速。

? FreeType,位图(bitmap)和适量(vector)字图显示支持。

? SQLite,一个对所有应用程序可用,功能强大的轻量级关系型数据库引擎。

? Core Libraries 该核心库提供了Java编程语言核心库的大多数功能。

? Dalvik VM, android平台的一个虚拟机,它相当于PC中Java的虚拟机JVM。 Android 的各种库一般是以系统中间件的形式提供的,它们均有的一个显著特点就是与移动设备的平台的应用密切相关。

Android运行环境主要指的虚拟机技术——Dalvik。Dalvik虚拟机和一般Java虚拟机(Java VM)不同,它执行的不是Java标准的字节码,而是Dalvik可执行格式(.dex)的执行文件。在执行过程中,每一个应用程序即一个进程(Linux的一个Process)。二者最大的区别在于Java VM是以基于栈的虚拟机(Stack-based),而Dalvik是基于寄存器的虚拟机(Register-based)。显然,后者最大的好处在于可以根据硬件实现更大的优化,这更适合移动设备的特点。

Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。 2.1.4 Linux 内核

Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件之间的抽象层,使得应用程序开发人员无需关心硬件细节。对于手机的开发商而言,如果想要Android平台运行到自己的硬件平台上就必须对Linux内核进行修改,通常要做的工作是为自己的硬件编写驱动程序。

2.2应用程序的基本组件

应用程序五大组件。

1. Activity 2. Service

3. Broadcast Receiver 4. Content Provider 5.Intent

然而,并不是所有的应用程序都必须包含上面的五个部分,你的应用程序可以由上面的一个或几个来组建。当你决定使用以上哪些组件来构建Android应用程序时,你应该将它们列在AndroidManifest.xml文件中,在这个文件中你可以声明应用程序组件以及它们的特性和要求。

2.2.1 Activity 简介

在Android程序中Activity代表了手机的一个屏幕,好比Asp.net应用中的一个网页,一个android应用相当于一个web站点。窗口中的可视内容被一系列层次的视图(view)提供——派生自View类的对象(后续章节会详细介绍)。视图就是 activity与用户交互的地方。例如,当用户触动一个显示小图片的视图时,会触发一些动作。Android提供了很多现成的视图供你使用——包括按钮,文本框,滚动条,菜单项,复选框还有更多。

整个视图层次通过Activity.setContentView() 方法放到 activity的窗口上。

下图2-2显示了View的层次结构。