Android 基础篇一——Android简介
来源:互联网 发布:程序员的成长之路 编辑:程序博客网 时间:2024/06/06 00:32
1、Android发展史
2003年10月,Andy Rubin(安迪·鲁宾)等人创建与Android系统同名的Android公司,并组建了Android开发团队,最初的Android系统是一款针对数码相机开发的智能操作系统。2005年8月被Google收购。
(1) Android
Android 是一个软件系统,用于连接设备,并不是平时所说的操作系统。
(2) Android版本
2、Android 系统架构与特性
(1) 应用程序层
该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。
(2) 应用程序框架层
该层是Android应用开发的基础,开发人员大部分情况是在和她打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。
(3) 系统库和Android运行时
Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。
系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如android.os、android.NET、android.media等等。后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。
(4) linux内核
Android核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。驱动:显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动、电源管理等。
3、Dalvik VM 和 JVM 、ART
(1)JVM (Java 虚拟机) 是一个虚构出来运行 Java 程序的运行时,是通过在实际的计算机上仿真模拟各种计算机功能的实现。它具有完善的硬件架构(如处理器、堆栈、寄存器等),还具有指令系统,使用 JVM 就是使用 Java 程序支持与操作系统无关。理论上在任何操作系统中,只要有对应的 JVM,即可运行 Java 程序。
(2)Dalvik VM 是在 Android 系统上运行 Android 程序的虚拟机,其指令集是基于寄存器架构的,执行特有的文件格式 -dex 字节码来完成对象生命周期管理、堆栈管理、线程管理、安全异常管理、垃圾回收等重要功能。
Android4.4及以前使用的都是Dalvik虚拟机,我们知道Apk在打包的过程中会先将java等源码通过javac编译成.class文件,但是我们的Dalvik虚拟机只会执行.dex文件,这个时候dex会将.class文件转换成Dalvik虚拟机执行的.dex文件。Dalvik虚拟机在启动的时候会先将.dex文件转换成快速运行的机器码,又因为65535这个问题,导致我们在应用冷启动的时候有一个合包的过程,最后导致的一个结果就是我们的app启动慢,这就是Dalvik虚拟机的JIT特性(Just In Time,即时编译技术)。
(3)ART (android runtime)是由于手机大部分都是用 arm 架构的 CPU,随着 Android 设备的发展,又推出的一种新的虚拟机 art。art 替换 dalvik 是从 4.4开始(可选的)5.0开始都换成了art虚拟机。
什么是ART:
在Dalvik下,应用每次运行都需要通过即时编译器(JIT)将字节码转换为机器码,即每次都要编译加运行,这一机制并不高效,但让应用安装比较快,而且更容易在不同硬件和架构上运行。
ART完全改变了这种做法,在应用安装时就预编译字节码到机器语言,在移除解释代码这一过程后,应用程序执行将更有效率,启动更快。
JVM 与 Dalvik 区别
jdk javac .java -> .class -> .dex
sdk dex 基于的架构 基于栈的架构 基于寄存器的架构
ART 和 Dalvik 的区别
(1)在Dalvik下,应用每次运行都需要通过即时编译器(JIT)将字节码转换为机器码,即每次都要编译加运行,这虽然会使安装过程比较快,但是会拖慢应用以后每次启动的效率。而在ART 环境中,应用在第一次安装的时候,字节码就会预编译(AOT)成机器码,这样的话,虽然设备和应用的首次启动(安装慢了)会变慢,但是以后每次启动执行的时候,都可以直接运行,因此运行效率会提高。
(2)ART占用空间比Dalvik大(字节码变为机器码之后,可能会增加10%-20%),这也是著名的“空间换时间大法”。
(3)预编译也可以明显改善电池续航,因为应用程序每次运行时不用重复编译了,从而减少了 CPU 的使用频率,降低了能耗。
- Android 基础篇一——Android简介
- Android核心基础——S01E02_Android简介
- Android(一)-Android简介
- Android测试一:Uiautomator——简介
- android基础篇一
- Android基础篇(一)
- Android学习笔记(一)——Android平台简介
- android基础--uri简介
- android基础activity简介
- Android基础service简介
- Android基础BroadCastReceiver简介
- Android基础ContentProvider简介
- Android 基础简介
- Android -- Service基础简介
- android初识一(简介)
- Android Fragment(一)---简介
- Android基础知识简介(一)
- 动画篇(一)——android动画基础
- 神经网络总结
- EhCache 在集群环境中使用缓存系统
- 最复杂的数
- 获取指定日期中日、周、月的开始时间或结束时间
- HDU1009(简单贪心)
- Android 基础篇一——Android简介
- 图的存储、遍历和求最小生成树
- 大小步(同余方程的解)
- 功夫小子实践开发-资源异步加载及过渡场景的分析和实现
- Filter过滤器+cookie实现自动登录和安全登录
- mongodb中sort慢的优化
- 通过过滤器进行敏感词汇的屏蔽
- TexturePacker 图片打包工具讲解与使用并且批处理打多包以及资源加密
- web第六天jquery