每日一问 | ActivityRecord、TaskRecord、ActivityStack、ActivityDisplay、ActivityStackSupervisor 分别是干什么的?
前两天看公众号文章:
分享一个困惑很久的问题:App前台,Activity会被回收吗?
文章中源码分析阶段,看到了一些核心类:
ActivityRecord、TaskRecord、ActivityStack、ActivityDisplay、ActivityStackSupervisor
绕起来有点晕。
问题来了:
- 这些类分别起到什么作用?
- 有什么好的方式帮助记忆吗?
更多问答 >>
-
2022-05-06 11:37
-
每日一问 | Service onStartCommand 返回STICKY是如何做到被拉活的?
2022-07-24 11:50 -
2022-05-27 20:55
-
2022-06-12 14:41
-
【大家提问】Android中的匿名binder与线程相关的一些问题
2022-07-03 10:48 -
每日一问 | 可以不借助 bindService,实现跨进程 binder 通信吗?
2022-04-27 23:43 -
每日一问 | 被声明为private final 的内部类,能生成一个子类对象吗?逆天篡改~
2022-04-15 21:13 -
每日一问 .class vs Class.forName() vs loadClass() 类加载傻傻分不清楚?
2022-02-11 14:22 -
每日一问 | 脱糖对于Android 打包期间插桩的有什么影响?
2022-03-07 21:26 -
每日一问 | 如何构造一个 hide interface 的实现类?
2022-02-08 23:51
ActivityManagerService Activity栈管理
ActivityRecord
记录Activity的信息,并通过成员变量task指向TaskRecord。
TaskRecord
描述Activity的Affinity所属的栈。
ActivityStack
管理着TaskRecord,内部维护Activity所有状态、特殊状态的Activity和Activity相关的列表数据。
ActivityStackSupervisor
管理所有的ActivityStack。
ActivityDisplay
表示一个屏幕,Android支持三种屏幕:主屏幕,外接屏幕(HDMI等),虚拟屏幕(投屏)一般地,对于没有分屏功能以及虚拟屏的情况下,ActivityStackSupervisor与ActivityDisplay都是系统唯一;ActivityDisplay主要有Home Stack和App Stack这两个栈。
记忆关系链
每个ActivityStack中可以有若干个TaskRecord对象;每个TaskRecord中可以有若干个ActivityRecord对象;每个ActivityRecord记录一个Activity信息。
正向关系链表:反向关系链
学到了
学习了
学到了
学到了
玩安卓网页版不支持markdown表格,可在线预览pdf:https://gitee.com/pgm250/blog_img_bed/raw/master/wanan/AMS%E6%A0%88%E7%AE%A1%E7%90%86.pdf
非常感谢,修改了一下支持啦,表格语法开始顶部需要有一行空行。