




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、概述 07年,Google公司推出了基于Java语言的Android平台,引起了IT业界的一致关注,同年,播思通讯公司开始研发基于其的OPhone平台。 08年,第一款Android手机G1面世,这款Google为HTC量身打造的滑盖手机由T Mobile发行,获得了用户的极大好评,也为整个Android平台的正式商用作出了榜样。 09年,将是OPhone/Android手机的第一个井喷年,播思通讯联合中国移动和各个手机厂商即将推出多款触屏手机。同时,Android社区也日趋壮大,已拥有各种应用五百多个,并在快速增长之中。 本文将对Android应用结构及Android系统的应用管理加以介绍。 本文面对的读者是对Android应用的研发人员、或有过Android开发经验的入门者。二、Android应用结构什么是Android应用? 理解什么是Android应用是Android入门所必须的,也是了解应用管理的前提。 那什么是Android应用呢?即指基于Android开发,编译,运行在Android平台的应用。这种应用在编译阶段被打成一个jar包,以.apk结尾,包内包含了所有运行阶段需要的代码与资源,其中主要分为三块:描述文件AndroidManifest.xml、代码段和运行时资源。AndroidManifest.xml AndroidManifest.xml是Android应用的描述文件,它描述了该应用的相关信息,主要包括以下各个元素。包名(package) 指定本应用内java主程序包的包名。当没有指定apk的文件名时,编译后产生程序包将以此命名。本包名应当在Android系统运行时唯一。认证(certificate) 指定本应用程序所授予的信任级别,目前有的认证级别有platform(system)、shared、media以及应用自定义的认证。不同的认证可以享受不同的权限。权限组(permission-group) 权限组的定义是为了描述一组具有共同特性的权限。Android系统中预订了一些组,它们是: android.permission-group.COST_MONEY android.permission-group.MESSAGES android.permission-group.MESSAGES android.permission-group.PERSONAL_INFO android.permission-group.LOCATION android.permission-group.NETWORK android.permission-group.ACCOUNTS android.permission-group.HARDWARE_CONTROLS android.permission-group.PHONE_CALLS android.permission-group.SYSTEM_TOOLS android.permission-group.DEVELOPMENT_TOOLS 从字面意思我们就可以理解每个组的特性。具体含义可以参考SDK文档。权限(permission) 权限用来描述是否拥有做某件事的权力。Android系统中权限是分级的,前分为普通级别(Normal),危险级别(dangerous),签名级别(signature)和系统/签名级别(signature or system)。 系统中所有预定义的权限根据作用的不同,分别属于不同的级别。 对于普通和危险级别的权限,我们称之为低级权限,应用申请即授予。其他两级权限,我们称之为高级权限或系统权限,应用拥有platform级别的认证才能申请。 当应用试图在没有权限的情况下做受限操作,应用将被系统杀掉以警示。 系统应用可以使用任何权限。权限的声明者可无条件使用该权限。 目前Android系统定义了许多权限,通过SDK文档用户可以查询到哪些操作需要哪些权限,然后按需申请。权限树(permission-tree) 权限树的设置是为了统一管理一组权限,声明于该树下的权限所有者归属该应用。系统提供了API,应用可以在运行时动态添加。 PackageManager.addPermission()使用权限(uses-permission) 应用需要的权限应当在此处申请,所申请的权限应当被系统或某个应用所定义,否则视为无效申请。 同时,使用权限的申请需要遵循权限授予条件,非platform认证的应用无法申请高级权限。SDK(uses-sdk) 标识本应用运行的SDK版本。高兼容性的应用可以忽略此项。application application是Android应用内最高级别(top level)的模块,每个应用内最多只能有一个application,如果应用没有指定该模块,一个默认的application将被启用。 application将在应用启动时最先被加载,并存活在应用的整个运行时生命周期。因此一些初始化的工作适合在本模块完成。 Application元素有许多属性,其中:“persistent”表示本应用是否为常驻内存,“enable”表示本应用当前是否应当被加载。 其它相关属性请参考SDK文档,开发者可以根据需要添加。 在AndroidManifest.xml文件中,运行时模块的定义都作为本模块的子元素。 当运行时模块被调度时,如果应用没有启动,将首先启动应用进行初始化,然后调度对应模块。activity activity是application模块的运行时子元素,标识了一个UI。除了application,一个应用可以声明并实现零至多个其它运行时模块,activity也同样。 activity也包含了许多定义它工作状态的属性,其中:“name”是必须的,它指定了该activity所在的文件名,如果该文件所属包不同于该应用的包名(即本描述文件的最开始处),那么名字前面需要加入所在包名。 activity通过增加intent-fliter来标识哪些intent可以被处理,同时intent也是调度activity的主要参数。 作为一个运行时的对象,activity的调度方式大致分为两种:一种是指定activit所在类名直接调度,另一种是利用activity可以处理的intent进行调度。 同一种intent可以被不同应用的不同activity处理。当出现此种情况时,用户需要选择具体的activity。receiver receiver也是application的运行时子元素。 receiver通过增加intent-fliter来标识它需要接受哪些intent。当收到intent后,receiver将根据不同的intent进行不同的处理。 当一个Intent发出后,所有注册了该intent的receiver都将会收到,系统会根据receiver在系统中的注册次序顺序发送。当一个receiver处理完该Intent后,系统才会向下一个receiver发送。 当一个receiver有多个未接收的intent时,将按照intent发送的次序顺序接收。service service也是application的运行时子元素。Service属于后台模块,启动后将长时间运行,除非停止该service或所在应用进程被杀死。 service从功能上分为两种,一种是服务于本应用,此时的service是一个普通的运行时模块,另一种是服务于所有应用或对应应用,此时需要定义API并将之公布来与其它应用进行交互。 service需要通过API:startService()添加到service管理器中,添加后即在后台运行。它接受外界信息的方式分两种:一种是增加IntentFilter来接收intent,一种是外界应用调用该service所定义的API。provider provider也是application的运行时子元素。它继承于ContentProvider,是对该应用管理的用户数据的结构化接入,是基于数据库操作方式的封装。 如果应用允许外部应用访问管理它的用户数据,provider是Android平台提供的最佳方式。activity-alias 顾名思义,是已有activity的别名。uses-library 标识应用启动所必须的共享库。代码段 应用所有的java文件被放入一个包结构,该包命名为classes.dex。运行时资源 Android应用运行时所需的各种资源有layout,drawable,string,style等类型。编译后所有资源统一存放在项目路径/res里,按照用途的不同存放在各个子文件夹中。 编译阶段,所有resource将被排序,每个resource在程序包中都拥有唯一的标识,同时一个名为resources.arsc的文件生成并被置入安装包中,该文件包含了所有索引以供运行时快速查询。而resource以同样目录结构组织放入安装包中。应用管理 应用管理是对系统中所有应用整个生命周期的管理。Android系统中,应用都是以.apk文件的形式存在,因此应用管理也可以简单理解为对.apk文件的管理。 从一个应用在系统中的生命周期来看,应用管理可以分为安装,卸载和使用等部分。应用安装 Android系统中,安装应用时不能指定安装目录,所有的应用都只能装在预置文件夹下。 Android系统支持数种安装方式,而播思通讯的Ophone平台在此基础上支持更多方式。后台应用(即有后台UI)前台应用(即有UI在前台)。 当应用所在进程被杀掉后,应用重新回到去激活状态。应用使用的API Android系统为应用管理功能提供了大量的API。根据功能的不同,这些API分为两大类:PackageManager相关和ActivitManager相关。PackageManager相关 本类API是对所有基于加载信息的数据结构的封装,包括以下功能: 安装,卸载应用 查询permission相关信息 查询Application相关信息(application,activity,receiver,service,provider及相应属性等) 查询已安装应用 增加,删除permission 清除用户数据、缓存,代码段等 非查询相关的API需要特定的权限,具体的API请参考SDK文档。ActivityManager相关 本类API是对运行时管理功能和运行时数据结构的封装,包括以下功能 激活去激活activity 注册取消注册动态接受intent 发送取消发送intent activity生命周期管理(暂停,恢复,停止,销毁等) activi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年吉林长春市消防救援支队特勤大队招录政府专职消防员真题
- 大棚销售专业知识培训内容课件
- 大棚西瓜种植课件
- 2025年压力表项目立项申请报告模板
- 城市拆迁协议书
- 养老服务机构合伙协议
- 2025年铍项目规划申请报告模范
- 停车位常年租赁协议
- 腾冲市网格员考试真题2024
- 2024年平凉市专业化管理的村党组织书记招聘真题
- 船舶制造公司管理制度
- 2025至2030年中国石油化工自动化仪表产业发展动态及未来趋势预测报告
- 中建EPC项目报批报建工作指南
- 白细胞减少症和粒细胞缺乏
- 2025届中考物理模拟卷 【云南专用】
- T/CECS 10353-2024内墙用艺术装饰涂料
- 多模态数据的语义融合与语义理解-洞察阐释
- 2023-2024学年江苏省镇江市高一下学期期末考试数学试题(解析版)
- 自动化干散货码头综合管控系统技术要求编制说明
- 检验科生物安全工作总结模版
- 房地产行业中的新兴人才管理
评论
0/150
提交评论