Android手机操作系统(转)

来源:互联网 发布:淘宝网精品女装 编辑:程序博客网 时间:2024/05/20 10:21

Android是什么

一、概述

Android本义机器人Google200711.5日发布的开源手机OS(在华注册商标名为安致,该平台由操作系统、中间件(SQLite)、用户界面和应用软件组成。Android不存在专有权障碍,目前版本是Android2.0

Android采用软件堆层(software stack,又名软件叠层)架构,底层以Linux内核工作为基础,提供基本功能;其他应用软件则由各公司自行开发,以Java编程。20101月,Google发表自家品牌手机电话的Nexus One

20089.22日,美国T-Mobile USA在纽约发布第一款Google手机T-Mobile G1(台湾宏达电代工制造),是世界上第一部使用Android操作系统的手机,支持WCDMA/HSPA网络,理论下载速率7.2Mbps,并支持Wi-Fi

 

二、基本情况

Android早期由Google开发,后由开放手机联盟开发,这个联盟由包括中国移动摩托罗拉、高通、宏达电HTC)和 T-Mobile在内的30多家领军企业组成。Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。

 

三、团队成员

GoogleHTCPHILIPST-Mobile、高通、魅族、中国联通、华为、联想、摩托罗拉、三星、LG及中国移动在内的34家企业,都将基于该平台开发手机业务,应用之间的通用性和互联性将在最大程度上得到保持。34家企业中并不包含诺基亚、苹果公司、AT&TVerizon、微软及加拿大RIMBlackberry)。

  <手机制造商> HTC、摩托罗拉、三星、LG、中国移动、日本KDDI、日本NTT DoCoMo、美国Sprint Nextel、意大利电信、T-Mobile

<半导体公司> Audience Corp(声音处理器)、Broadcom Corp(无线半导体提供商)、英特尔、Nvidia (图形处理器公司)、SiRFGPS技术提供商)、Synaptics(手机用户界面技术)、德州仪器、高通、惠普HP

<软件公司> AplixAscendereBaySkypeNMS CommunicationsNoser Engineering AGNuance CommunicationsSkyPopPacketVideoSonix NetworkTAT-The AstonishingTribeWindRiver Systems

 

 

四 架构

 

Ø       应用程序框架:支持组件的重用与替换;

Ø       Dalvik虚拟机:专门为移动设备做了优化;

Ø       内部集成浏览器:该浏览器基于开源的WebKit 引擎;

Ø       优化的图形库:包括2D3D图形库,3D图形库基于OpenGLES 1.0 (硬件加速可选);

Ø       SQLite:用作结构化的数据存储;

Ø       多媒体支持:包括常见的音视频和静态印象文件格式 (如 MPEG4, H.264, MP3, AAC,AMR, JPG, PNG, GIF);

Ø       GSM电话(依赖于硬件);

Ø       Bluetooth, EDGE, 3G,and WiFi (依赖于硬件);

Ø       照相机,GPS,指南针,和加速度计 (依赖于硬件);

Ø       丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件。


五、架构剖析

1.  核心应用程序包(基本应用程序)

包括email客户端、电话本、SMS短消息程序、日历、地图、浏览器、联系人管理程序等,所有的应用程序都是用Java编写的。

2.   应用程序框架(应用程序到可以用的基本内容)

开发者完全可以访问核心应用程序所使用的API框架。该应用程序架构用来简化组件软件的重用。任一应用程序都可发布它的功能且任何其它的应用程序都可使用其所发布的功能块。该应用程序重用机制使得组建可以被用户替换。

  以下所有的应用程序都由一系列的服务和系统组成,包括:

Ø    一个可扩展的视图Views可以用来建应用程序,包括列表lists,网格grids,文本框text boxes,按钮buttons,甚至包括一个可嵌入的web浏览器

Ø    内容管理器Content Providers 使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。

Ø    一个资源管理器Resource Manager提供非代码资源的访问,如本地字符串,图形,和分层文件layoutfiles

Ø    一个通知管理器Notification Manager使得应用程序可以在状态栏中显示客户通知信息。

Ø    一个活动类管理器Activity Manager用来管理应用程序生命周期并提供常用的导航回退功能。

3.   程序库

被系统中各种组件所使用的C/C++ 库集。该库通过Android 应用程序框架为开发者提供服务。以下是一些主要的核心库:

Ø    系统C库: BSD 继承的标准C库,专为嵌入式linux设备定制。

Ø    媒体:基于PacketVideoOpenCORE;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态影像文件。(openmax就在这)

Ø    Surface Manager对显示子系统的管理,并且为多个应用程序提供2D3D图层的无缝融合。

Ø    LibWebCore一个最新的web浏览器引擎用来支持Android浏览器和一个可嵌入的web视图。

Ø    SGL:一个内置的2D图形引擎

Ø    3D libraries基于OpenGLES 1.0 APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。

Ø    FreeType位图bitmap和向量vector字体显示。

Ø    SQLite:一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

4.  Android运行库

Android包括了一个核心库,该库提供了Java编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。

Dalvik是针对于同时高效地运行多个VMs来实现的。Dalvik虚拟机执行.dexDalvik可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有类都由Java汇编器编译,然后通过SDK中的dx工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于linux的一些功能,比如线程机制和底层内存管理机制。  

5.   核心系统服务

依赖于Linux 2.6内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。Linux内核也同时作为硬件和软件堆栈之间的硬件抽象层。

 

六、Android平台手机优势

1.   开放性

2.   挣脱运营商束缚

3.   硬件选择丰富

4.   开发商不受任何限制

5.   无缝结合Google应用

 

七、 Android开发

1.     Android关键类

视图类,ContentProviders应用交互管理类、ResourceManager非编码资源管理类、NotificationManager通告管理类、ActivityManager生命周期管理类。

2.  界面开发

组件的初始化抽取出来放到配置文件中,组件更新用编码方式来处理。

3.  应用构成

Android的应用一般由以下四个关键部分构成

Ø       Activity每个应用都是必须的,Activity代表一个应用的一个具体的界面管理类,其本身并不显示。

Ø       IntentReceiver可使应用对外部事件做出响应,比如,当应用正在执行,突然有了来电,这个时候可使用IntentReceiver做出处理是应用更健壮。

Ø       Service Android应用生命周期是由Android系统来决定的,不由具体的应用线程左右。当应用要求在没有界面显示的情况还能正常运行,(要求有后台线程,而后台线程是不会被系统回收,直到线程结束)这个时候就需要用到Service

Ø       Content Provider 可以说Content Provider封装很多Android当中的上下文环境,包括SQLite,这就使得在不同应用之间交互成为可能。

4.  布局管理

Ø       FrameLayout:左上角只显示一个组件。

Ø       LinearLayout:线性布局管理器,分为水平和垂直俩中,只能进行单行布局。

Ø       TableLayout:任意行和列的表格布局管理器。其中TableRow代表一行,TableRow的每一个视图组件代表一个单元格。

Ø       AbsoluteLayout:绝对布局管理器,坐标轴的方式,左上角是(00)点,往右x轴递增,往下Y轴递增。

Ø       RelativeLayout:相对布局管理器,更具最近一个视图组件,或是顶层父组件来确定下一个组件的位置。

5.  Activity交互方式

Ø       Intent方式用来在Activity之间做交互。Intent有个意图说明,值得深究,举个简单的例子,有种叫Intent.ACTION_CALL,可直接拨打电话。

Ø       SharedPreferencesAndroid平台上一个轻量级的存储类,主要是保存一些常用的配置。SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,最终是以xml方式来保存,效率不如Intent,但是由于可共享,所有可以在Acitivity之间交互。其效率比SQLite高。

Ø       SQLite也就是数据库,这种方式不推介,因为其效率问题,如果是在不同应用之间交互,可以考虑SQLite。或是永久存储的情况下。

6.  Android生命周期

理解Android生命周期非常重要,主要有以下几点:

Ø       每一个Android应用都是以一个进程的方式运行的,其生命周期不是有自身控制,而是由系统根据运行的应用的一些特征来决定。

Ø       理解Android生命周期对你的应用什么时候会被系统回收很重要。

Ø       理解好生命周期可提高应用的健壮性。比如应用的初始化应该放到onCreate方法中,应用暂停的时候应用重写onPause方法来保存当前应用操作结果。

7.  SQLite

SQLiteAndroid中提供的内置数据库,据说比MySql更轻巧。SQLite也是开源产品。数据库的操作方式:

SQL语句直接操作,插入、更新、删除都可以直接写SQL语句,调用execSQL就可以,而查询需要使用rawQuery()来完成,查询结果返回是一个可滚动的结果集,Cursor在对Cursor操作前,需要将其游标移动到第一位,每取一个结果向下移一位。

8.  Android实际开发经验分享

自定义组件的显示问题,在写自定义View的时候经常要对视图的XY调整,以达到预期的理想位置。可以讲每个组件的XY坐标值画到组件旁边,这样很直观,一看就知道该怎样调整。

使用Log来打印日志和进行调试。

使用LogCat视图,在showView中有LogCat视图,LogCat视图会显示一些Android仿真器打印出的堆栈信息,对应用的调试非常有帮助,另外Log打印的日志也在这边显示。

使用Emulator Control视图,Emulator Control可以完成一些简单的设备操作,比如,模拟来电,短消息。

活用tools目录下的工具,该目录在Android SDK中都有提供,通过这些工具可以操作Android仿真器,比如,创建一个虚拟SD卡,将系统中的文件移动到虚拟SD中,Android都有提供相应的工具,相关命令可以上网查阅。

 

八、 未来发展

Android采用WebKit浏览器引擎(与iPhone相似),具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等。但其最震撼人心之处在于Android手机系统的开放性和服务免费。