(4.4.1)android的系统框架类

1-android的特点有哪些

2-android使用MVC模式的组件或地方

adapter和文件布局方式

3-android的系统框架

一 应用程序层 该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。 二 应用程序框架层 该层是Android应用开发的基础,开发人员大部分情况是在和她打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。 三 系统库和Android运行时 系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如android.os、android.net、android.media等等。后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。 四 Linux内核 Android核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。驱动:显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动、电源管理等。

4-Android Dalvik虚拟机

Dalvik虚拟机是Android程序的虚拟机,是Android中Java程序的运行基础。其指令集基于寄存器架构,执行其特有的文件格式——dex字节码来完成对象生命周期管理、堆栈管理、线程管理、安全异常管理、垃圾回收等重要功能。它的核心内容是实现库(libdvm.so),大体由C语言实现。依赖于Linux内核的一部分功能——线程机制、内存管理机制,能高效使用内存,并在低速CPU上表现出的高性能。每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。 **Dalvik VM ≠Java VM dalvik基于寄存器,而JVM基于stack Dalvik执行的是特有的DEX文件格式,而JVM运行的是*.class文件格式。 优势: 1. 在编译时提前优化代码而不是等到运行时 2. 虚拟机很小,使用的空间也小;被设计来满足可高效运行多种虚拟机实例。 3. 常量池已被修改为只使用32位的索引,以 简化解释器**

5-Dalvik虚拟机你需要知道的15个问题大部分jvm是基于栈的,而Dalvik是基于寄存器的。 基于栈的机器必须使用指令来载入栈上数据,或是用指令来操纵数据,因此指令集更为庞大。但是对于寄存器指令而言,又必须指定源地址和目的地址,因此,基于寄存器的jvm单个指令更大。Dalvik一些特点: a)常量池32位索引 b)默认栈12kb,3个页,每页4kb c)默认启动堆2MB,最大值16MB,,最小1MB d)堆最大支持1024MB e)堆和栈的参数可以通过-Xms和-Xmx更改所有的android线程都对应一个linux线程。每个Android Dalvik应用程序都运行在自己的沙盒里,不同的应用在不同的进程空间里运行。Dalvik相当于java的JVM,.NET的CLI,Python、Perl、Ruby的Interpreter。Dalvik定义自己的字节码为VM的指令。目前Dalvik支持的功能: a).dex文件 b)Dalvik指令集 c)J2ME CLDC API d)多线程Dalvik支持的平台有: a)基于Unix的系统 b)Linux c)BSD d)Mac OSXDalvik 虚拟机实现位于 dalvik/目录下,dalvik/vm是虚拟机的实现部分,被编译为libdvm.so,而dalvik/libdex被编译成libdex.a静态库作为dex工具库;dalvik/dexdump是.dex文件的反编译工具。虚拟机的可执行程序位于dalvik/dalvikvm中,将被编译为dalvikvm可执行程序。Dalvik需要的其他库: a)OpenSSl 加密技术 b)Zlib 免费的一般目的数据压缩库 c)ICU 字符编码技术 d)java包 包括java.nio,java.lang,java.util e)Apache Harmony classlibApache HttpClientdx工具:位于dalvik/dx目录,用于将字节码转换成.dex。 例:dx –dex –output=helloworld.dex helloworld.classdexdump工具:位于dalvik/dexdump目录,用于反编译dex文件。dex数据类型: byte 8bit ubyte 8bit short 16bitlittle-endian ushort 16bit little-endian int 32bitlittle-endian uint 32bitlittle-endian long 64bitlittle-endian ulong 64bitlittle-endian sleb128 LEB128 variable-lengtha uleb128 LEB128 variable-lengtha uleb128p1 LEB128 variable-lengtha LEB128类型:1~5个字节组成。所有字节组合在一起代表一个32位值。除最后一个字节最高标志位为0外,其他都为1,剩下的7位为有效负荷。有符号的LEB128的符号由最后一个字节的有效负荷最高位决定。具体算法在:dalvik/libdex/LEB128.h。dex文件被映射到DexMapList,结构体定义在dalvik/libdex/DexFile.h(c) 中。6-Dalvik虚拟机和Art虚拟机的区别

Dalvik 1. 熟悉java开发的都知道,java文件会被编译成class文件,同样Android开发也会先将java文件编译成class文件(使用javac),但是由于dalvik并没有遵守jvm规范,是为了android系统而优化的。所以dalvik会继续讲class文件编译成.dex文件,然后包装成为.apk文件,作为android运行的应用。 2. Dalvik虚拟机适应于移动终端上的特点: 专有的.dex文件把所有的.class文件整合到一个文件中,减少了.class文件中的冗余信息,提高运行性能 基于寄存器实现,而jvm等pc上的虚拟机大多是基于栈的

当你感到悲哀痛苦时,最好是去学些什么东西。

(4.4.1)android的系统框架类

相关文章:

你感兴趣的文章:

标签云: