===============================================================================
WMS中最基本的元素,描述WMS中的一个窗口。它既可以是由App添加过来的View,也可以是系统创建的系统窗口。mAttrs为WindowManager.LayoutParams类型,描述布局参数。mClient为IWindow类型,也就是App端的ViewRootImpl::W。为了查找方便,WMS中的mWindowMap保存了IWindow到WindowState的映射,mTokenMap保存了IApplicationToken到WindowToken的映射。
===========================================================================
向App提供IWindowSession接口让其可以和WMS通信,每个App在WMS有一个Session对象,App就是通过这个Session来向WMS发出窗口管理申请的,命令dumpsys window sessions可以查看系统中的Session。
===============================================================================
描述WM中一组相关的窗口,这些Window对应的WindowState放在其成员变量windows里。其主要继承类AppWindowToken,它是针对App的WindowToken结构。WindowState中的mAppToken指向所属的AppWindowToken,如果是系统窗口,mAppToken为空,mToken指向WindowToken对象。
==================================================================================
每个App的Activity对应一个AppWindowToken。其中的appToken为IApplicationToken类型,连接着对应的AMS中的ActivityRecord::Token对象,有了它就可以顺着AppWindowToken找到AMS中相应的ActivityRecord。其中allAppWindows是一个无序的列表,包含该Activity中所有的窗口。用dumpsys window display可以查看z-ordered的AppWindowToken列表:
AppWindowToken保存了属于它的WindowState的有序列表,而它本身也作为一个列表被管理在TaskStack中的mTasks成员中。
TaskStack中有个重要的变量mBounds,在相同Task里的AppWindowToken对应的Activity的大小是相同的,所以mBounds代表的就是Activity对应的大小。
==================================================================================
表示一个显示设备上的内容,这个显示设备可以是外接显示屏,也可以是虚拟显示屏。其中 mWindows是一个WindowState的有序(Z-ordered,底部最先)列表。mStackBoxes包含了若干个StackBox,其中 一个为HomeStack,另一个是App的StackBox。所有的StackBox被组织成二叉树,StackBox是其中的节点,其中有三个重要成 员变量,mFirst和mSecond指向左和右子结点(也是StackBox),StackBox的成员mStack才是我们真正关心的东西 -TaskStack。可以看到,为了要把TaskStack存成树的结构,需要一个容器,这个容器就是StackBox。
==================================================================================
描述单个Activity,Activity堆栈中的基本单元。
==============================================================================
TaskRecord中的mActivities是ActivityRecord的列表,它们是按照历史顺序排序的。
=================================================================================
Activity堆栈,其中的ActivityRecord是通过TaskRecord这一层间接地被管理着。
==================================================================================
这里想和大家分享的是一个阿里的朋友分享给我的一份阿里内部的 Android Framework 层学习手册。这是他们那里的一个P7大佬每天熬夜到凌晨,肝了半个月才整理成的。
这位大佬把Android Framework 内核解析精编成了452页的PDF!现在这份资料开放下载了!
有需要的朋友可以点击【这里】进入我们两千人的技术交流圈的共享文件夹自取。
===================================================================================
- 第一节 Binder系列—开篇
- 第二节 Binder Driver初探
Binder 驱动概述
Binder 核心方法
……
- 第三节 Binder Driver再探
Binder 通信简述
Binder 通信协议
场景总结
Binder 内存机制
……
- 第四节 Binder启动ServiceManager
启动过程
核心工作
……
- 第五节 获取ServiceManager
获取 ProcessState 对象
获取 BpBinder 对象
获取 BpServiceManager
……
- 第六节 注册服务(addService)
ProcessState
服务注册
Binder Driver
ServiceManager
……
- 第七节 获取服务(getService)
-
第八节 framework层分析
-
第九节 如何使用Binder
-
第十节 如何使用AIDL
-
第十一节 Binder总结
- 第十二节 Binder面试题全解析
- 第一节 宏观理论分析与Message源码分析
-
第二节 MessageQueue的源码分析
-
第三节 Looper的源码分析
-
第四节 handler的源码分析
-
第五节 Handler机制实现原理总结
-
第六节 Handler面试题全解析
- 第一节 Android系统启动-综述
-
第二节 Init篇
-
第三节 zygote篇
-
第四节 SystemServer上篇
-
第五节 SystemServer下篇
由于篇幅原因,这里就不一一进行展示,这份由阿里P7大佬整理的 Android Framework 内部学习手册已经被整理成了PDF文档。
有需要的朋友可以点击【这里】进入我们两千人的技术交流圈的共享文件夹自取。
=====================================================================
大家可以关注我的B站,定期分享移动开发技术学习视频和其他学习资源!
视频系列:
技术文系列:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

文末
我总结了一些Android核心知识点,以及一些最新的大厂面试题、知识脑图和视频资料解析。
以后的路也希望我们能一起走下去。(谢谢大家一直以来的支持)
部分资料一览:
- 330页PDF Android学习核心笔记(内含8大板块)
-
Android学习的系统对应视频
-
Android进阶的系统对应学习资料
- Android BAT大厂面试题(有解析)
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
能一起走下去。(谢谢大家一直以来的支持)
部分资料一览:
- 330页PDF Android学习核心笔记(内含8大板块)
[外链图片转存中…(img-IttBjL3I-1712536598871)]
[外链图片转存中…(img-P6d4ThKw-1712536598871)]
-
Android学习的系统对应视频
-
Android进阶的系统对应学习资料
[外链图片转存中…(img-kFI77Vub-1712536598872)]
- Android BAT大厂面试题(有解析)
[外链图片转存中…(img-dWAqQZ3r-1712536598872)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!