基础(一)
>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内核
安全性、内存管理、进程管理、网络协议栈、驱动模型。





