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