>Android系统简介
-
android 分层
-
应用程序层
-
应用程序框架层
-
系统运行库
-
linux核心层。
-
-
设计规则
-
每个程序都运行在了自己的进程空间中,需要时启动,不需要时终止。
-
每个程序都有自己的运行库ART,各应用程序之间的代码是相互隔离的。
-
每个程序被分配唯一的ID,任何应用程序的代码与其他应用程序的代码是相互隔离的。
-
-
Android应用程序的四大组件
-
activity活动,用于与用户进行交互的可视化界面,凡是在应用程序中看到的东西都是放在activity中。每一个activity子类集成父类Activity。
-
Service服务,无需可视化界面,需要在后台长期运行的应用程序,背景音乐播放器,和后台数据处理任务等,继承自父类Service。
-
Broadcast
Receiver广播接收器,接受和处理广播消息的组件。没有影虎界面,在相应其接收到的信息时可以启动一个activity,继承自父类BroadcastReceiver。 -
Content
Provider内容提供者,可以将指定的一组数据让其他程序使用。数据可能存储在文件系统或者SQLlife中。继承自父类ContentProvider。 -
补充Intent,负责对应一次操作中的动作、动作涉及的数据、附加数据进行描述。Android根据此描述找到对应的组件,将intent传递给调用的组件。
-
-
Android应用程序框架层
-
使用java语言编写。
-
使用java native interface调用core lib层的本地方法
-
实现了一系列服务:活动管理器,窗口管理器、内容提供器、视图系统、通告管理器、包管理器、电话管理器、资源管理器、位置管理器、xmpp服务。
-
-
系统运行库
-
系统C库: 从BSD集成的标准C系统函数库
-
媒体库:基于OpenMax库,支持多种音频视频图像文件
-
Serface Manager:显示子系统管理,提供了2D&3D图层的无缝融合
-
LibWebCore:最新的web浏览器引擎。
-
SGL:底层的2D图形引擎
-
3Dlibraries:基于OpenGL3D软件加速
-
FreeType:文图和矢量图字体显示
-
SQLLite:数据库引擎。
-
Dalvik:虚拟机,在程序执行时,编译成dex的字节码后交给dalvik虚拟机执行
-
ART:虚拟机,Dalvik的替代品。在应用成许安装时,吧程序代码转换成及其语言,避让程序成为真正的本地应用。
-
采用了AOT预编译技术。函数调用去虚拟化,调用接口和虚函数时,需要寻找真正的函数,浪费大量的时间。去虚拟化后可以迅速调用。消除异常检查。
-
更高效的垃圾回收机制GC。GC调用有三种情况:GC_EXPLICIT(应用程序通过system.gc主动调用)GC_FOR_ALLOC(内存分配不足时)
GC_CONCURRENT(给java层分配内存后,计算一份陪的大小达到阈值时,对象大小超过384KB)GC_MALLOC(内存分配失败)GC_EXTERANL_ALLOC(外部内存分配失败)
-
-
-
Linux内核
安全性、内存管理、进程管理、网络协议栈、驱动模型。