本文简单介绍一下Android系统, Android是基于Linux内核的开源的应用于移动平台一款操作系统。
它包含以下一些特色的功能:针对移动设备优化的Dalvik虚拟机, 基于开源浏览器引擎WebKit的集成浏览器,优化的2D图形库和基于OpenGL ES的3D图形库,用来存放结构化数据的SQLite,支持各种格式的多媒体,对蓝牙,WiFi,GPS的支持,当然最重要的还是强大的系统框架和API来方便我们重用它的组件,以及非常丰富的开发环境的支持,包括设备模拟器,Eclipse插件支持,内存性能剖析工具等。
下面来看一下Android的系统架构图:
这里可以看到Android需要Linux内核提供核心的功能,如驱动管理,内存管理,进程管理等。Android系统提供了供各种组件使用的C/C++类库。
Google针对移动设备内存小和处理器慢的特点,实现了一个非规范的Java虚拟机Dalvik。默认情况下,每个应用程序会在单独一个虚拟机的一个进程里运行,多个虚拟机可以并行运行。不像传统JVM运行class文件,Dalvik运行.dex格式的文件,它通常比同样class文件打成的.jar包要小,因为它进行了一些优化,比如同样的String只保存一个拷贝的String Interning方式。
接下来简单介绍一下Android系统包含的几大组件:
1) Activities: Android系统的用户界面都是基于Activity创建的,一个应用程序可以包括一个或者多个Activity, 但都是继承于android.app.Activity这个基类。每个Activity包括一个默认窗口用来填充一系列的View,用户通这些View来与Activity交互,Android系统提供了很多View的控件,如按钮,文本框,滚动条等。
2) Content providers: 它是对Android系统的数据访问的一种封装, 提供一系列标准的存取数据方法,不管数据是存在文件系统,还是SQLite数据库,各个应用程序都可以通过Content provider访问数据。如果想在各个应用程序之间共享数据也只有通过Content provider方式来实现。Android的编程模型也是鼓励我们创建自己的数据的同时,也可以让其它应用程序访问。比如在发送消息的应用程序用必然会调用到联系人的数据。
3) Services: 类似于windosw平台上的服务。不同于Activity和Content providers的短生命周期,Services可以一直在后台运行,而且可以独立于任一Activity,比如播放背景音乐,定时检查软件是否需要更新等。
4) Intents: 指Android中的系统消息。我们知道很多系统中各应用程序都是通过发送消息来进行交互的, Android正是通过Intents来通知应用程序的各种事件,比如电池电量不足,检测到存储卡等。