【Android源码 栏目提醒】:网学会员为需要Android源码 的朋友们搜集整理了android背景 - 技术总结相关资料,希望对各位网友有所帮助!
Android是基于Linux内核的操作系统是Google公司在2007年11月5日公布的手机操作系统早期由Google开发后由开放手持设备联盟Open Handset Alliance开发。
它采用了软件堆层software stack又名以软件叠层的架构主要分为三部分。
底层Linux内核只提供基本功能其他的应用软件则由各公司自行开发部分程序以Java编写。
2011年初数据显示仅正式推出三年的操作系统Android已经超越称霸十年的塞班系统采用Android系统主要厂商包括美国摩托罗拉MOTOROLA、韩国的三星SAMSUNG、英国索尼爱立信Sony Ericsson另外还有中国厂商如HTC、联想、华为、中兴等使之跃居全球最受欢迎的智能手机平台Android系统不但应用于智能手机也在平板电脑市场急速扩张。
编辑本段系统架构 应用程序 Android以Java为编程语言使接口到功能都有层出不穷的变化其中Activity等同于J2ME的MIDlet一个 Activity 类class负责创建视窗window一个活动中的Activity就是在 foreground前景模式背景运行的程序叫做Service。
两者之间通过由ServiceConnection和AIDL连结达到复数程序同时运行的效果。
如果运行中的 Activity 全部画面被其他 Activity 取代时该 Activity 便被停止stopped甚至被系统清除kill。
View等同于J2ME的Displayable程序人员可以通过 View 类与“XML layout”档将UI放置在视窗上Android 1.5的版本可以利用 View 打造出所谓的 Widgets其实Widget只是View的一种所以可以使用xml来设计layoutHTC的Android Hero手机即含有大量的widget。
至于ViewGroup 是各种layout 的基础抽象类abstract classViewGroup之内还可以有ViewGroup。
View的构造函数不需要再Activity中调用但是Displayable的是必须的在Activity 中要通过findViewById来 从XML 中取得ViewAndroid的View类的显示很大程度上是从XML中读取的。
View 与事件event息息相关两者之间通过Listener 结合在一起每一个View都可以注册一个event listener例如当View要处理用户触碰touch的事件时就要向Android框架注册View.OnClickListener。
另外还有Image等同于J2ME的BitMap。
中介软件 操作系统与应用程序的沟通桥梁并用分为两层函数层Library和虚拟机Virtual Machine。
Bionic是 Android 改良libc的版本。
Android 同时包含了Webkit所谓的Webkit 就是Apple Safari 浏览器背后的引擎。
Surface flinger 是就2D或3D的内容显示到屏幕上。
Android使用工具链Toolchain为Google自制的Bionic Libc。
Android采用OpenCORE作为基础多媒体框架。
OpenCORE可分7大块PVPlayer、PVAuthor、Codec、PacketVideo Multimedia FrameworkPVMF、Operating System Compatibility LibraryOSCL、Common、OpenMAX。
Android 使用skia 为核心图形引擎搭配OpenGL/ES。
skia与Linux Cairo功能相当但相较于Linux Cairo skia 功能还只是雏形的。
2005年Skia公司被Google收购2007年初Skia GL源码被公开目前Skia 也是Google Chrome 的图形引擎。
Android的多媒体数据库采用SQLite数据库系统。
数据库又分为共用数据库及私用数据库。
用户可通过ContentResolver类Column取得共用数据库。
Android的中间层多以Java 实现并且采用特殊的Dalvik 虚拟机Dalvik Virtual Machine。
Dalvik虚拟机是一种“暂存器型态”Register Based的Java虚拟机变量皆存放于暂存器中虚拟机的指令相对减少。
Dalvik虚拟机可以有多个实例instance 每个Android应用程序都用一个自属的Dalvik虚拟机来运行让系统在运行程序时可达到优化。
Dalvik 虚拟机并非运行Java字节码Bytecode而是运行一种称为.dex格式的文件。
硬件抽像层 Hardware Abstraction Layer Android 的 HAL硬件抽像层是能以封闭源码形式提供硬件驱动模块。
HAL 的目的是为了把 Android framework 与 Linux kernel 隔开让 Android 不至过度依赖 Linux kernel以达成 kernel independent 的概念也让 Android framework 的开发能在不考量驱动程序实现的前提下进行发展。
HAL stub 是一种代理人proxy的概念