一,android整体架构分为四层:
1)应用程序层:
这就是我们平常开发android用java编写的app都属于这一层,系统自带了一些app,日历等;
2)应用程序框架层:
这一层就是Framework:
这一层是核心应用使用api的框架,为应用提供各种api,包括各种组件来支持开发,
3)系统运行库层:
分为两层:
1.程序层:
数据库,SGL---底层2D图形引擎,
Surface Manager --显示子系统的管理,并未多个应用提供2D,3D图层的无缝融合
2.android 运行库(Android Runtime)
它包括了一个核心库,该核心库提供java变成语言核心库的大多数功能;
还有一个虚拟机
4)Linux内核层:
android系统基于linux内核,
二, Framework框架,分为服务端和客户端整理:
服务端重要的东西:
服务端包涵两个重要的类:
windowManagerService(WmS)和ActivirtyManagerService(AmS)
WmS: 控制窗口的显示与隐藏,以及窗口的程序,他是管理窗口的,大多数view都和他打交道;
AmS: 管理所有应用程序的Activity,具有调动activity的生命周期能力,
3) keyQ: 他是WmS的一个内部类,一旦创建就会启动一个新的线程,这个线程不断的接受读取
用户UI的操作,并把这些消息放到消息队列中;
4)inputDispatcherThread类:
该类一但创建就会启动一个线程,这个线程会从消息队列中不断的取出用户消息,进行过滤,
在将这些消息发送给当前活动的客户端;
客户端重要的类:
ActivityThread:
该类为应用程序的主线程类,所有程序都只有一个主线程类,ActivityThread所在的线程即为主线程。
acitivty类: 该类为程序的最小单元,主线程动态加载可执行代码最小单元类,一个应用程序可以包含多个activity类,ActivityThread类会根据用户操作选择动态加载那个acitivty类:
phoneWindow类:该类继承于window类,phoneWindow类包含一个decorView对象;
因此phoneWindow是包含一个view对象,并提供一组通用的api
window类: 该类提供了一组通用窗口操作api,仅仅是客户端的,wms所管理的窗口并不是window类;而是一个view或者viewGroup类
DecorView类:该类是一个Fragment子类,并且是phoneWindow的一个内部类,
ViewRoot类:Wms管理窗口时,需要客户端进行某种操作,这时需要ipc调用完成,客户端收到ipc调用,会把该调用转换为本地的一个异步调用,通过handler实现,viewRoot继承handler,
所以viewRoot主要作用是把Wms的ipc调用转为本地的一个异步调用;
W类:该类继承Binder,是viewRoot的一个内部类,当通过ipc调用时,会调用该binder类,然后
会给该类所在viewRoot类发送一个handler消息,以便进行异步处理;
WindowManager类:当客户端需要申请一个窗口,具体创建窗口的任务是由Wms完成的,
windowManager相当于Wms和客户端的桥梁,客户端不能直接和wMS进行交互;
Framework是我们学习安卓,想要有一定见解的话,一定要了解的知识,学习了,就是一种收获。