本文来自刘兆贤的博客_CSDN博客-Java高级,Android旅行,Android基础领域博主 ,引用必须注明出处!
关于Framework,就是应用层底下的控制层,离应用层最近,总想找个机会,写写WindowMangerService和ActivityManagerService(注意非控件,而是指一类服务)以及其他一些东西,对底层做一个更为全面的认识。而很早以前,写过一篇文章,来简述Android系统-" Android高级之系统介绍",同样今天我们在讲Framework层时也会再对系统做一个回顾;下图是我对本节内容的一个基本介绍。
PS:W类是ViewRoot的一个内部类,ViewRoot最大作用就是把IPC调用转为本地调用。
HistoryRecord-每个Acitivty都会有一个,用来管理和记录Activity,是一个Binder对象
ViewRoot-实现View和WindowManger之间的协议,是View Hierarchy的最顶层
PhoneWindow-其中有autoManger和keyguardManager的实现对象
一、窗口
就着上图,我们会对每一条做进一步的解说(注意上图大多是包含关系,少数是关联关系,请区别对待),上图对Framework简单做了描述;同时科普一下什么叫窗口,窗口非指window类,而是指所有使用windowmanger将
其展示在用户面前的控件,如toast、activity、menu等,而这些界面通过设置window的callback来监听到wms传给view对象的信息,如手势操作。而窗口类型基本可以分为3种:
1、系统窗口,不需要父窗口-可以指定2000-2999层
2、子窗口,依赖父窗口-1000-1999层 如Toast
3、应用窗口,对应activity-小于99层 如Activity
窗口可以说是View,而wms不直接跟view沟通,而是通过实现IWindow的ViewRoot.W类,然后再传给view。
关于Context,上下文引用,项目中使用的还比较多,是一个场景,用来配合上下文操作;一个应用中context的数量=service个数+activity个数+application个数,原因它们都继承自ContextWraper,而它继承自context。
二、linux文件系统
由于android系统基于linux