Android 平台架构
1.应用程序(Application)
E-mail 客户端、SMS 短信程序、日历、地图、浏览器、联系人管理程序,主要用 Java 编写。
2.应用程序框架(Application Framework)
视图(Views):列表(Lists)、网格(Grids)、文本框(Text Boxes)、按钮(Buttons),可嵌入的 Web 浏览器;
内容提供器(Content Provides):程序数据。就是应用程序访问其他应用程序数据,用作共享数据;
资源管理器(Resource Manager):和 VS 里面的 res 一样。各种资源,以及布局文件。
通知管理器(Notification Manager):应用程序在状态栏中显示自定义信息。
活动管理器(Activity Manager):应用程序生命周期,以及导航回退功能。
3.程序库(Libraries)
系统 C 库:继承于 BSD 的系统 C 库,专门为嵌入式 Linux 定制;
媒体库:基于 PacketVideo 的 OpenCore,用于音视频格式文件的回放录制,也支持静态文件,编码格式包含 MPEG4、H.264、MP3、AAC、AMR、JPG 和 PNG;
Surface Manager:管理显示子系统,并且为多个应用程序提供 2D 和 3D 图层的无缝融合;
LibWebCore:Web 浏览器引擎,支持 Android 浏览器和可嵌入的 Web 视图;
SGL:底层 2D 图形引擎;
3D:基于 OpenGL ES API,支持 3D 硬加速和软加速;
FreeType:用于位图与矢量字体显示;
SQLite:轻量级关系型数据库;
4.Android 运行时环境
Android Runtime 由核心库和 Dalvik 虚拟机构成;
核心库提供 Java 编程语言核心库的大多数功能,Dalvik 可以同时运行多个虚拟系统,Android 每个程序都有一个 Dalvik 虚拟机实例;
Dalvik 底层依赖于 Linux 内核的线程机制和内存管理机制,Dalvik 虚拟机执行 .dex 的 Dalvik 可执行文件,这些可执行文件源码中所有的类由 Java 编译并通过 SDK 中的 dx 工具转化为 .dex 格式。
5.Linux 内核
安全性、内存管理、进程管理、网络协议栈和驱动模型,Linux 内核作为硬件和软件栈之间的抽象层。
Android 应用程序组成
1.活动(Activity):
活动是 Android应用程序必须包含的部分,其他三个可以没有!
通常情况下,一个活动就是一个单独的屏幕。每个活动通过继承活动基类被实现为一个独立的类,活动将会显示由视图控件组成的用户接口并对事件作出相应;
程序的每个屏幕都是一个活动,当屏幕移动到另一个之后,程序每次只执行新打开的当前屏幕,以前打开的应用程序屏幕被压栈并暂停,用户可以回退到以前打开过的屏幕,或者选择性地删除不需要的屏幕。
2.意图(Intent):
通过运行时绑定机制,实现程序运行时连接两个不同的组件,如界面切换;
Intent 请求动作时,IntentFilter 用于描述一个活动或者广播接收器能够操作哪些 Intent,IntentReceiver 则使应用程序对外部事件作出响应。
3.服务(Service):
应用程序后台代码,具有较长生命周期,必须由某个 Activity 调用,自身不能单独运行;
要注意的是 Android 应用程序的生命周期不是由应用程序自生决定,这与 Windows 不同:Windows 上应用程序都有主线程,而且主线程一般是 UI 线程,如果主线程死亡那么内存就会被系统自动回收,应用程序就会死亡,但是 Android 中,Activity 和后台服务具有相同的优先级,系统不会自动回收后台线程,所以 Android 应用程序可以是一个纯粹的后台服务,比如音乐播放器,用户播放歌曲之后,打开短信时,虽然播放器的 Activity 被压栈暂停,但是歌曲仍在播放。
4.内容提供器(Content Provider):
使用文件或者 SQLite 数据库做数据持久化与数据共享;
应用程序可以通过实现 ContentProvider 的抽象接口仅将数据内容暴露,但不暴露数据的组成结构(即结构体),仅有知晓数据结构与交互协议的应用程序,才可以正确运用这些数据。
网络资源
安卓网站:www.android.com
谷歌官网:developer.android.com