3、什么是ROM,什么是RUU。
Android应用及应用管理简介一、概述
????? 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系统提供了安装应用的API:PackageManager.installPackage(final Uri packageURI,?
???? final IPackageInstallObserver observer, final int flags);?
使用API卸载
????? Android提供了卸载应用的标准API:PackageManager().deletePackage(String packageName, IPackageDeleteObserver observer, int flags);
- observer实现了回调函数packageDeleted(boolean succeeded)以检查卸载是否成功
- flags提供卸载标识。Android平台提供的标识有
????? PackageManager.DONT_DELETE_DATA = 0x00000001;
????? 标识卸载时是否同时删除用户数据。?
????? 本API需要"android.permission.DELETE_PACKAGES"权限,该权限属于签名级别,因此只有系统级别的应用程序才能使用。
删除即卸载????? 对应于拷贝即安装,系统同样支持删除即卸载功能。当用户删除/sdcard/app目录下安装包时,系统将自动检测到删除事件并卸载对应应用。
????? 本方法适合一次删除大量应用。
????? 应用安装后即处于可用状态。对于系统中所有应用,从管理层面分为信息管理和应用调度两部分;从应用自身角度分为去激活与激活两种状态。
信息管理????? Android应用的相关信息在AndroidManifest.xml文件中定义,前面已经介绍,信息管理的第一步就是加载信息。
?系统启动时,将根据安装目录的不同,先后对已安装应用进行信息加载;系统启动后,运行时安装的应用,在安装成功后进行信息加载。
系统中所有信息加载后,在system service进程(Android应用的核心进程,存放了几乎所有的系统service和核心数据结构)中形成了对应数据结构:
????? 应用调度既所有应用的运行时管理,是建立在信息管理之上的。根据运行时模块的静态信息,系统可以进行模块加载和管理。
????? 系统启动时,应用信息会被加载,而应用未被启动,此时所有应用处于去激活状态。系统启动完成时,常驻内存应用将被启动,这些应用在系统运行中始终处于激活状态。对于其他应用,当运行时模块(activity,service,receiver,provider等)被调度时,应用将会激活。
????? 对于所有已激活的应用,系统将之纳入进程管理和内存管理。进程管理将缓存应用运行时数据和状态,当应用因非正常原因被杀掉后,将有机会在重启后恢复原来状态。系统内存不足时,加通过杀掉非常驻内存应用来释放内存,其优先级为空闲应用>后台应用(即有后台UI)>前台应用(即有UI在前台)。
????? 当应用所在进程被杀掉后,应用重新回到去激活状态。
应用使用的API????? Android系统为应用管理功能提供了大量的API。根据功能的不同,这些API分为两大类:PackageManager相关和ActivitManager相关。
PackageManager相关????? 本类API是对所有基于加载信息的数据结构的封装,包括以下功能:
非查询相关的API需要特定的权限,具体的API请参考SDK文档。
ActivityManager相关????? 本类API是对运行时管理功能和运行时数据结构的封装,包括以下功能
task管理相关API需要特定的权限,具体API可参考SDK文档。
三、总结????? 本文实质上是对Android相关API的理论总结与串联,从总体上介绍应用管理的相关知识,并不是一份开发文档或教材,读者仍然需要参考SDK文档中。
????? 如果读者看完本文后,对于应用管理有了一定理论基础,对开发有一定的帮助。本文的目的也就达到了。?(作者:邹伟)
(声明:本网的新闻及文章版权均属OPhone SDN网站所有,如需转载请与我们编辑团队联系。任何媒体、网站或个人未经本网书面协议授权,不得进行任何形式的转载。已经取得本网协议授权的媒体、网站,在转载使用时请注明稿件来源。)