版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章第四章 Android开发框架开发框架本章主要内容本章主要内容Android系统架构Android应用程序组成Activity生命周期Android项目架构AndroidManifest.xml文件解析XML简介Android生命周期Android系统架构Android系统架构 与其它操作系统一样,Android的系统架构采用了分层结构。Android分为四层,从高到低分别是应用程序层、应用程序框架层、系统运行库层(包含系统库和Android运行库)和linux核心层。 Android从本质上来讲是一套软件堆叠(Software Stack),主要分为三层:即操作系统、中间件和应用程序。
2、其中,Android的中间件可以再细分出两层,底层是函数库(Library)和虚拟机(Virtual Machine; VM),上层为应用程序框架(Application Framework)。上面架构图中蓝色部分(包括上两大层和Android Runtime中的Core Libraries)使用Java语言开发,绿色部分(LIBRAIES)使用C/C+开发,红色部分(Linux Kernel)使用C开发,黄色部分为Dalvik VM。Android系统架构1、应用程序层应用程序层(Applications) Android会同一系列核心应用程序包一起发布,主要包括拨号程序、email客户端,
3、SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的这些应用程序都是使用JAVA语言编写的。2、应用程序框架层应用程序框架层(Application Framework) 对于Android系统,开发人员可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能模块(需要遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。Android系统架构支撑应用程序正常运行的是一系列的服务, 其中包括:1.Views System:丰富且可扩展的视图(Views
4、),用于构建应用程序,包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons),甚至是可嵌入的web浏览器。2.Content Providers(内容提供器):使得应用程序可以访问由另一个应用程序所维护的数据(如联系人数据库), 或者共享它们自己的数据。3.Resource Manager(资源管理器):提供非代码资源的访问,如本地字符串,图形,和布局文件( layout files )4.Notification Manager(通知管理器):使应用程序可以在系统状态栏中显示提示信息。通知区域设定在手机的顶部,例如未读短信邮件、未接电话等通知消息都
5、会在此区域显示。5.Activity Manager(Activity管理):用于管理应用程序各Activity的生命周期并提供常用的导航回退功能。Android系统架构3、函数库层函数库层(Libraries) Android 包含了一些基础的C/C+库,它们能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库1. System C library:一个从 BSD 继承来的标准 C 系统函数库( libc ), 它是专门为基于embedded linux的设备定制的。2. Media Libraries:基于PacketVideo
6、OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG等等 。3. Surface Manager:提供对显示子系统的管理,并且为应用程序提供了2D和3D图层的无缝融合。Android系统架构4. LibWebCore:一个最新的web浏览器引擎,支持Android浏览器及可嵌入应用程序的web视图。5. SGL:底层的2D图形引擎。6. 3D Libraries:基于OpenGL ES 1.0 APIs实现;该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D软加速。7. Free
7、 Type:位图(bitmap)和矢量(vector)字体显示。8. SQLite:SQLite是一套开放源码的关系数据库,是一种对于所有应用程序可用并且功能强劲的轻型关系型数据库引擎。9. SSL:Secure Socket Layer用于保护网页通讯安全的协议。Android系统架构4、Android运行时环境(Android Runtime) Android虽然使用Java程序语言来开发应用程序,但是却不是使用原有的J2ME版本来执行Java程序,而是采用Android自有的Android Runtime来执行。Android Runtime由下面两个核心部分组成。pCore Libra
8、ries即核心库,该核心库实现了JAVA编程语言核心库的大多数功能。pDalvik Virtual MachineAndroid系统架构4、内核层(Linux Kernel) Android平台的系统内核是Linux 2.6,其包含的主要功能有安全(Security)、内存管理(Memory Management)、进程管理(Process Managemen)、网络协议栈(Network Stack)、硬件驱动(Driver Model)等,Linux内核同时也作为硬件和软件栈之间的抽象层。Android应用程序组成Android应用程序组成 一个常规的Android程序主要由Activit
9、y、Broadcast Receiver、Service、Content Provider四个部分组成。但是并不是所有的Android应用程序都必须包含这4个部分Android应用程序组成pActivityAndroid中最普通的模块之一,也是开发者最常遇到的模块之一。在Android程序中,一个Activity就相当于手机屏幕的一页显示,类似于浏览器的一个网页。通常在Activity中添加一些UI组件,并对这些组件实现相应的事件处理。在一个Android应用程序中,可能涉及多个Activity,并在这几个Activity中进行跳转。打开一个新的Activity时会将当前的Activity置为
10、暂停状态并压入堆栈,Android默认会把每个应用从开始到当前的每个Activity都保存到堆栈中,也可以通过设定使一些无需保留的Activity不压入堆栈。Android应用程序组成pBroadcast Receiver可以翻译为“广播接收器”,它用于对Android系统广播的事件进行接收以方便做出所需的处理,例如有电话拨打进来时,由于Phone这个应用程序注册了与这个事件相关的Broadcast Receiver,它就将对这个事件进行处理。需要注意的是BroadcastReceiver本身并不会生成UI,即对于用户这个接收事件是不可见的,BroadcastReceiver通过Notific
11、ationManager来通知用户。BroadcastReceiver可以在AndroidManifest.xml中注册,也可以在代码中通过Context.registerReceiver()进行动态注册。一旦某个应用程序注册了BroadcastReceiver,那么即使程序并没有启动,当这个BroadcastReceiver所响应的事件发生时,系统也会根据需要启动该应用程序。Android应用程序组成pService使用过智能手机的读者可以发现,使用音乐播放器播放音乐时,可以切换至其他的应用程序,音乐会在后台继续播放。这就是Service在后台对音乐播放进行控制,当点击了播放器上的停止按钮时
12、,播放音乐的Service也就停止了。Service没有用户界面,是一种可以运行很长时间的程序。可以简单地将Service理解为没有用户界面的Activity。Service可以通过两种方式启动,即startService(Intent service)和Context.bindService(),在第5章中会对Service进行详细的介绍。Android应用程序组成pContent Provider在Android中,无论是文件数据还是数据库数据,这些数据都是私有的,默认不对其他应用程序开放的。那么如何在两个应用程序之间交换数据呢?这时就需要Content Provider。可以将Conte
13、nt Provider理解为数据操作类。在该类中,Android实现了一组标准的方法接口,通过这些接口,应用程序就可以读取或者保存这个类提供的各种类型的数据了。常见常见的的接口接口 query(Uri,String,String,String,String),该方法通过关键字查询数据 ; insert(Uri,ContentValues),该方法的作用是将一条数据插入到指定位置; update(Uri,ContentValues,String,String),更新数据; delete(Uri,String,String),删除数据。Activity生命周期在应用程序中每一个Activity都拥
14、有自己的生命周期,这个生命周期由系统来实现统一的管理。一个Activity有三个基本的状态: 当其在前台运行时(即在Activity当前任务的堆栈顶),即为活动状态活动状态(运行状态)。这时Activity会响应用户的操作。 当Activity失去焦点但是对用户仍然可见时为paused暂停状态暂停状态。此时,其他的Activity存在于自己之上,这种情况可能是透明或者被非全部覆盖(如非全屏的对话框)。所以其中一些处于暂停状态的Activity也可以被显示。一个暂停的Activity仍然是处于活动状态的(它维护着所有的状态保存信息,并且依然附着在窗口管理器)。 如果一个Activity完全被另一
15、个Activity所掩盖,那它的状态会变为stopped。此时仍然保存着状态信息。 当其他应用程序需要使用更多的内存时,系统有可能会杀死处于paused状态或stopped状态的Activity(系统会在杀死Activity之前对状态进行保存)。当其再次需要显示时,系统会重新运行该Activity并且加载所保存的状态信息。Activity生命周期如图所示是描述Activity生命周期的框图Activity生命周期Activity生命周期,包括了三个主要的循环结构,由大至小分别如下,其中每一个较小的循环都是较大循环的子集。完整的完整的Activity生命周期。生命周期。这个周期循环从该Activ
16、ity的onCreate()方法第一次被调用开始,直到onDestroy()方法被调用结束。在onCreate()方法中,Activity会对所有的全局状态进行初始化,并在onDestroy()方法中释放所有资源。Activity的可见生命周期。的可见生命周期。这个周期从onStart()方法被调用时开始,直到onStop()方法被调用时结束,在这个周期中Activity对于用户是可见的,但是也有可能不处于Activity栈的最上方即不是可交互的。在这个周期中可以获取资源并对UI进行更新。Activity前台生命周期。前台生命周期。在这个周期中Activity始终处于栈的顶端并且可以与用户交互
17、。周期从onResume()方法被调用时开始直到onPause()方法被调用时结束,对于一个Activity来说这两个方法是十分频繁的会被调用到的,例如当Android进入休眠状态或者该Activity调用了新的Activity。Android项目架构1.src:存放java源代码。2.gen:编译器自动生成的java代码,这个目录下的文件是由系统维护的。3.assets:这个目录下的文件会被打包到Android应用程序安装包(.apk)中。4.res: 资源文件目录,添加到这个目录下的文件都会在gen下的R.java文件中与一个整形常量相关联;如果在res下存放的资源在应用中没有被使用,在打
18、包的时候就不会将这部分资源打包,这样可以减小安装文件的大小。5.drawable-hdpi:存放适用于高分辨率设备的图片文件。Android工程目录Android项目架构7.drawable-ldpi: 存放适用于低分辨率设备的图片文件。8.drawable-mdpi:存放适用于中等分辨率设备的图片文件。9.layout:这个目录下的文件是用于自定义界面的。10. values:这个目录下用于存放一些常量,例如最常见的string.xml文件是用于存放程序中的字符串,只要在这些文件中增加了任何的属性配置,都会反映在gen下的R.xml文件中。11. AndroidManifest.xml :应
19、用程序功能清单文件,用于向系统描述该应用程序的一些功能,例如该应用程序包含了多少个Activity、Service,需要使用哪些权限等等12. perties: 这个文件不会直接使用,由编译工具自动生成。13. proguard.cfg:该文件也不重要,适用于对代码进行加密,防止被反编译。AndroidManifest.xml文件解析AndroidManifest.xml是每个Android项目中必须的文件。它位于项目的根目录,描述了package中的全局数据,包括package中的组件(如Activities,Services等等)以及这些组件各自的实现类,还有各种能被处理的数据即其他属性。属性属性intent-filters这些filters隐式地描述了其对应的Activity启动的条件。当Activity要执行一个操作时,例如打开网页或联系簿时,它将创建一个intent对象。这个intent对象包含了一些描述想做什么、想处理什么数据、数据的类型等等信息。Android通过比较这些intent对象和每个Activity声明的intent-filter中的信息,从中找到最合适的Activity来处理调用者所指定的操作。除了声明程序中的Activities,Co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年双盘剪切机项目可行性研究报告
- 混凝土制品课程设计
- 电气课课程设计书
- 中国铀矿行业发展动态及运营效益预测研究报告(2024-2030版)
- 中国重烷基苯行业需求动态及投资盈利预测研究报告(2024-2030版)
- 中国进口啤酒行业消费态势及销售动态预测研究报告(2024-2030版)
- 中国营销服务行业经营趋势与投资预测分析研究报告(2024-2030版)
- 中国粮油市场深度调查研究报告(2024-2030版)
- 中国硫酸钙晶须行业应用状况及产销需求预测研究报告(2024-2030版)
- 2024年中国带锁手柄球阀市场调查研究报告
- 汉字笔画名称表(拼音版)
- 校车使用(许可)申请表
- 月度质量例会PPT模板
- 煤矿皮带智能化集控系统PPT教学讲授课件
- 分数乘除法整理复习(课堂PPT)
- 故乡雨正普五线谱(正谱)
- YD_T 3956-2021 电信网和互联网数据安全评估规范_(高清版)
- 2022年物业管理师《物业管理实务》考试题库大全-下(多选题、简答)
- 大班科学活动教案《豆豆家族》含PPT课件
- 压力管道检验员在线考试习题与答案
- 【精品试卷】部编人教版(统编)一年级上册语文第一单元测试卷含答案
评论
0/150
提交评论