探秘丰富多彩的Android 应用程序

移动开发 Android
Android 应用程序运行在它自己的进程中, 包括一个email客户端, SMS程序, 日历, 地图, 浏览器, 联系人, 等等其它。

谷歌和其它几十个手机公司建立了开放手机联盟,Android在未公开之前常被传闻为Google电话或GPhone,开发既有用又有吸引力的移动服务,并推广这些产品。

开发者对于核心应用程序使用的相同框架的API具有完全的访问权限. 应用程序架构被设计来简化组件的重用; 任何应用程序都能发布其功能。然后任何其它应用程序都可以使用那些功能(以框架强迫的安全限制为准). 这个相同的机制允许组件被用户所替换。

所有基础的Android 应用程序都是一套服务和体系, 包括: 一套丰富的, 可扩展的视图(Views), 可被用来构建一个应用程序, 包括列表(lists), 栅格(grids), 文本框(text boxes), 按钮(buttons), 以及内嵌网络浏览器 。

内容提供程序(Content Providers)使得应用程序能够从其它应用程序访问数据(例如联系人), 或共享它们自己的数据。资源管理器(Resource Manager), 提供对非代码资源的访问, 例如本地化字符串, 图形, 以及布局文件通知管理器(Notification Manager)使得所有应用程序能够在状态栏显示自定义的警报 。

Android包含了一套被Android系统各种各样组件所使用的C/C++库. 这些功能通过Android应用程序框架展现给开发者. 一些核心库列举如下:

◆系统C库 - 一个BSD驱动的标准C系统库(libc)的实现, 基于嵌入式Linux的设备所调整 
◆媒体库 - 基于PacketVideo的OpenCORE; 这个库除了支持对很多流行的音视频格式的回放和录制之外, 也支持对静态图像文件, 包括MPEG4, H.264, MP3, AAC, AMR, JPG, 以及PNG 
◆表面管理器 - 管理对显示子系统的访问以及从多个应用程序对2D与3D图形层的无缝合成 
◆LibWebCore - 一个现代的网络浏览器引擎, 使得Android浏览器和可嵌入的网络视图更加强大 
◆SGL - 基础的2D图形引擎 
◆3D库 - 基于OpenGL ES 1.0 API而实现; 它或使用硬件3D加速(如果可用), 或使用内含的高度优化的3D软件
◆光栅化引擎 FreeType - 位图和矢量字体渲染 SQLite - 一个对所有应用程序可用的强大且轻量的关系型数据库引擎

Android包含了一套核心库, 提供了在Java程序设计语言核心库中可用的大部分功能,每个Android 应用程序运行在它自己的进程中, 具有它自己的Dalvik虚拟机实例。Dalvik被编写以便于一个设备可以有效地运行多个虚拟机. Dalvik虚拟机通过为最小内存封装优化的Dalvik可执行文件(.dex)格式来执行文件。

虚拟机是基于寄存器的, 并且运行通过Java语言编译器编译并通过所含"dx"工具转换为.dex格式的类. Dalvik虚拟机对于基础的功能依赖于Linux内核, 例如线程和低级内存管理。Android对于核心系统服务基于Linux 2.6版本, 例如安全性, 内存管理, 进程管理, 网络堆栈, 以及驱动模型. 内核同样在硬件和其余软件栈之间起到一个抽象层的作用。

每一个Android 应用程序都有自己的进程,每个进程都对应着一个Dalvik虚拟机进程。当一个Android 应用程序中运行着多个 Dalvik 虚拟机时,我们不用担心其效率问题,Dalvik已对此作了相应的优化。

Dalvik 虚拟机是基于寄存器的,所以速度要快一些,其可执行文件格式是(.dex) 格式。通过"dx"工具可以将java可执行程序转换成dex格式。Dalvik虚拟机通过linux内核来管理线程以及底层的内存操作。

开放手机联盟的成立和 Android 的推出是对现状的重大改变,在带来初步效益之前,还需要不小的耐心和高昂的投入。但是,我们认为全球移动用户从中能获得的潜在利益是值得付出这些努力的。

【编辑推荐】

  1. Android应用程序组建原理深入剖析 
  2. Android SMS短信服务相关概念简述 
  3. PythonAndroid数据库相关代码解读 
  4. PythonAndroid安装卸载程序具体操作方法解析 
  5. Android应用程序的四个关键点 
责任编辑:chenqingxiang 来源: NET130
相关推荐

2010-02-05 16:28:07

Android

2010-02-03 15:58:53

Python应用程序

2010-03-03 16:08:20

Android手机系统

2010-02-22 18:25:07

2010-02-03 18:06:42

Python语言

2010-02-26 17:54:54

python

2009-12-22 17:00:58

ADOMD.NET对象

2010-02-04 14:27:11

2010-03-19 14:12:06

太网交换机

2009-12-17 14:45:37

Visual Stud

2009-12-17 14:01:44

Visual Stud

2010-01-08 10:41:56

JSON 数据

2010-01-06 16:02:53

2010-01-13 18:30:18

CC++程序设计

2010-01-27 10:29:39

C++代码解析

2010-01-14 15:15:39

C++Test

2010-01-12 14:52:00

C++技术

2009-12-18 15:49:12

ADO.NET组件

2021-11-12 20:00:52

Linuxcowsay命令

2009-12-09 10:34:10

嵌入式Linux操作系
点赞
收藏

51CTO技术栈公众号