1.通讯制式的进化
手机的发展根据通信技术大致可以划分为4个时代(G:Generation的缩写):
Ø1G:最初的模拟、仅限语音的蜂窝电话标准。类似于简单的无线电台,只能进行通话,并且通话是锁定在一定频率上的,这个频率也就是手机号码。(很容易被窃听)
Ø2G:第二代移动通信技术,代表为GSM,以数字语音传输技术为核心。比如那会儿的小灵通手机,信号质量和通话质量都非常好。还有一些智能手机,可以支持一些简单的java小程序,如UC浏览器,搜狗输入法等。
Ø3G:无线通信与国际互联网等多媒体通信结合的移动通信系统。能够处理图像、音乐、视频流等多种媒体形式,提供包括网页浏览、电话会议、电子商务等多种信息服务。3G技术在传输声音和数据的速度上有很大的提升,也是当今最流行的通信技术。
Ø4G:又称IMT-Advanced技术,包括了TD-LTE和FDD-LTE,LTE就是Long Term Evolution的缩写,长期演进的意思。4G能够传输高质量的视频和图像,并且速度比之前采用的拨号上网快200倍,几乎满足所有用户对无线网的需要,理论上可达100Mbps的下载速度。
2.Android系统架构
Android的系统架构采用了分层的设计。从下面的架构图看,Android分为四层,从低层到高层分别是Linux内核层、系统运行库层、应用程序框架层和应用层。
Android linux
Ios unix (要钱)开源分享linus linux
一.应用程序层
该层不仅包括系统内置的应用也包括用户自己安装的应用,比如Email客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序、QQ、微信、淘宝、美团等。改成所有的应用程序都是使用Java语言编写的。
二.应用程序框架层
Android系统中的每个应用都依赖于该框架提供的一系列服务和系统,其中包括:
l活动管理器( Activity Manager):用来管理应用程序生命周期并提供常用的导航回退功能。
l丰富而又可扩展的视图(Views):可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(textboxes),按钮(buttons),甚至可嵌入的web浏览器。
l内容提供器(Content Providers):使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。
l资源管理器(Resource Manager):提供非代码资源的访问,如本地字符串,图形,和布局文件( layoutfiles )。
l通知管理器(Notification Manager):使得应用程序可以在状态栏中显示自定义的提示信息。
三.系统运行库层
该层主要分为Libaries程序库和AndroidRuntime库
1.程序库
Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。以下是一些核心库:
lSurface Manager -对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。
l媒体库-该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG。
lSQLite -一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
lOpenGL ES -该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。
lFreeType -位图(bitmap)和矢量(vector)字体显示。
lWebKit -一个最新的web浏览器引擎,支持Android浏览器和一个可嵌入的web视图(WebView)。
lSGL -底层的2D图形引擎
lSSL - SSL(Secure Sockets Layer安全套接层),在传输层对网络连接进行加密,为网络通信提供安全及数据完整性的一种安全协议,。
lLibc -一个标准C系统函数库( libc )。
2.Android Runtime库
Core Libraries -该核心库提供了Java编程语言核心库的大多数功能。
Dalvik Virtual Machine -每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。
Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。
四.Linux内核层
Android的核心系统服务依赖于Linux内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的抽象层。
3.Android的版本迭代
Android系统从最开始的1.6版本已经发展到现在最新的6.0版本,如何查看各个版本:eclipse里面打开SDKManager。SDK Manager.exe是ADT根目录下的一个SDK管理程序,该程序负责下载、更新、删除与sdk相关的文件。
如下图操作打开SDK Manager:
注意:目前android市场上基本2.3版本以下包含2.3版本的android手机已经很少了,市场占有率很低大概2~3%,所以大部分android应用都是直接从4.0以上系统开始进行开发兼容了。
4.两种虚拟机的不同
ØJavaSE程序使用的虚拟机叫Java Virtual Machine,简称JVM,Android应用也使用Java语言开发,但是使用的虚拟机是Dalvik Virtual Machine,简称DVM。
ØDalvik是Google公司自己设计用于Android平台的Java虚拟机。它执行的是已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。
ØDalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。
Dalvik和标准Java虚拟机(JVM)首要差别
lDalvik基于寄存器,而JVM基于栈。
基于寄存器的虚拟机对于编译后变大的程序来说,在它们执行的时候,花费的时间更短。
l不同于Java虚拟机运行Java字节码,Dalvik虚拟机运行的是其专有的文件格式Dex;Dex文件格式可以减少整体文件尺寸,提高I/O操作的类查找速度;
Dalvik和Java运行环境的区别
lDalvik主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常管理,以及垃圾回收等重要功能;
lDalvik负责进程隔离和线程管理,每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行;
l所有的Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制;
l有一个特殊的虚拟机进程Zygote,他是虚拟机实例的孵化器。它在系统启动的时候就会产生,它会完成虚拟机的初始化,库的加载,预制类库和初始化的操作。如果系统需要一个新的虚拟机实例,它会迅速复制自身,以最快的数据提供给系统。对于一些只读的系统库,所有虚拟机实例都和Zygote共享一块内存区域;
5.ART虚拟机
ØART模式是什么?
Art第一次安装的时间 变长;了7.0基本解决的了这个问题
Art占用空间大
ART模式英文全称为:Android runtime,谷歌从Android 4.4系统开始新增的一种应用运行模式,与传统的Dalvik模式不同,ART模式可以实现更为流畅的Android系统体验。在4.4系统之前,Android系统在Linux的底层下构筑Dalvik一层的虚拟机,通过其可以更好适应多样的硬件架构,开发者只需要按一套规则进行应用便可,无需因为不同的硬件架构而处理与底层的驱动关系,从而大大提高开发的效率,但因为应用均是运行在Dalvik虚拟机中,因此应用程序每次运行的时候,一部分代码都需要重新进行编译,这过程需要消耗一定的时间和降低应用的执行效率,最明显的便是拖延了应用的启动时间和降低了运行速度。
ØART模式有什么作用?
ART模式最大的作用就是提升了Android系统流畅度,相比Dalvik模式中出现的耗电快、占用内存大、即使是旗舰机用久了也会卡顿严重等现象,ART模式中这种问题得到了很好的解决,通过在安装应用程序时,自动对程序进行代码预读取编译,让程序直接编译成机器语言,免去了Dalvik模式要时时转换代码,实现高效率、省电、占用更低的系统内存、手机运行流畅。
ØART模式的缺点
ART模式可以降低手机硬件配置要求,减少RAM内存依赖,不过在安卓4.4系统中,安装应用的时间比安卓4.4以下版本系统更长,这主要由于应用安装过程中需要先执行编码导致,并且安装应用更占存储空间(ROM)。