Android应用程序管理

1. 简介

Android一词的本义指“机器人”,谷歌的基于Linux平台的开源手机操作系统以“Android”命名,以机器人为标志。Android系统早期由谷歌开发,后由开放手持设备联盟(Open Handset Alliance,OHA)开发。OHA由谷歌与34家厂商一起于2007年11月5日创立,包括手机制造商、电信运营商和芯片制造商,如下表。OHA创立的同时,谷歌发布了Android系统。

Android采用了软件堆层(Software stack,又名以软件叠层)的架构,主要分为三部分,包括底层Linux内核、Android中间件和系统关键应用程序。Android中间件以Dalvik虚拟机为基础构成,这是由谷歌自己设计开发的Java Virtual Machine。Android上的应用使用Java语言开发,Android SDK为在Android系统上开发Java应用提供了一整套开发工具和API。

2. 应用程序组成

Android的每个应用程序都对应一个安装包,称之为APK (Android Package), 在系统运行时每一个APK对应一个操作系统进程。

下图所示为APK中所包含的组件

APK中所包含的组件

(1)Activity:Activity就是一个界面,这个界面里面可以放置各种控件,如短信编辑框等;

(2)Service:服务是运行在后台的功能模块。如文件下载、音乐播放程序等;

(3)Content Provider:它是Android平台应用程序间数据共享的一种标准接口,它以类似于URI(Universal Resources Identification)的方式来表示数据,如:content://contacts/people/1101;

(4)Broadcast Receiver:与此组件相关的概念是Intent,Intent是一个对动作和行为的抽象描述,负责一个程序的组件之间、不同程序之间进行消息传递,Intent包括目标组件地址和消息数据。Broadcast Receiver组件负责实现侦听Intent消息并对其作出反应。

下图为APK中各组件之间的典型关系示例。

APK中各组件之间的典型关系示例

3. 应用程序生命周期管理

Android的每个应用程序以一个Linux进程运行,默认情况下,在进程中执行一个单一的线程,应用程序所有的组件均在这个进程的这个线程中运行。当然也可以为任意进程衍生出其它线程。Android系统会尽可能长的延续一个应用程序进程执行,确保其正常执行结束。除了应用程序执行结束后,正常释放内存外,在内存过低超过阀值时,系统仍然会不可避免需要移除旧的进程。为决定保留或移除一个进程,Android将每个进程都放入一个“重要性层次”中,依据则是它其中运行着的组件及其状态。重要性最低的进程首先被消灭,然后是较低的,依此类推。重要性共分五层,依据重要性列表如下:

(1)前台进程是用户操作所必须的, 任一时间下,仅有少数进程会处于前台,仅当内存实在无法供给它们维持同时运行时才会被杀死。

(2)可视进程没有前台组件,但仍可被用户在屏幕上所见。可视进程依然被视为是很重要的,非到不杀死它们便无法维持前台进程运行时,才会被杀死。

(3)服务进程是由startService() 方法启动的服务,它不会变成上述两类。尽管服务进程不会直接为用户所见,但它们一般都在做着用户所关心的事情(比如在后台播放mp3 或者从网上下载东西)。所以系统会尽量维持它们的运行,除非系统内存不足以维持前台进程和可视进程的运行需要。

(4)背景进程包含目前不为用户所见的activity。这些进程与用户体验没有直接的联系,可以在任意时间被杀死以回收内存供前台进程、可视进程以及服务进程使用。

(5)空进程不包含任何活动应用程序组件。这种进程存在的唯一原因是作为缓存以改善组件再次于其中运行时的启动时间。系统经常会杀死这种进程以保持进程缓存和系统内核缓存之间的平衡。

Android会依据进程中当前活跃组件的重要程度来尽可能高的估量一个进程的级别。比如说,如果一个进程中同时有一个服务和一个可视的activity,则进程会被判定为可视进程,而不是服务进程。

此外,一个进程的级别可能会由于其它进程依赖于它而升高。一个为其它进程提供服务的进程级别永远高于使用它服务的进程。

4. 实现应用程序开机自动启动

任何一个Android应用程序要实现开机自动启动, 必须做到如下两点:

1) 继承BroadcastReceiver类,并实现onReceive()方法,在此方法中启动应用程序。

2) 在应用程序的AndroidManifest.xml文件中订阅BOOT_COMPLETED消息,如下:















本文转自samsunglinuxl51CTO博客,原文链接: http://blog.51cto.com/patterson/663149,如需转载请自行联系原作者




优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/415640

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。