当前位置: 首页 > news >正文

中国知名的建网站的公司工程建设公司官网

中国知名的建网站的公司,工程建设公司官网,医院行业的网站是很难做吗,脚上起小水泡很痒是怎么回事目录 一#xff1a;概览 WindowManagerService 基本介绍 ActivityManagerService 基本介绍 二#xff1a;AMS及其关联的WMS中主要组件的类图和对像图 一#xff1a;android 9中AMS/WMS的类图和对像图 二#xff1a;android 10中AMS/WMS的类图和对像图 三#xff1a… 目录 一概览 WindowManagerService 基本介绍 ActivityManagerService 基本介绍 二AMS及其关联的WMS中主要组件的类图和对像图 一android 9中AMS/WMS的类图和对像图 二android 10中AMS/WMS的类图和对像图 三android 11中AMS/WMS的类图和对像图 四android 12中AMS/WMS的类图和对像图 五android 13中AMS/WMS的类图和对像图 三AMS 初始化流程 一android 9 中AMS的初始化流程 1非activity组件的创建和引用 2activity相关的类的创建和引用 二android 11 中AMS的初始化流程 1非activity组件的创建和引用 2activity相关的类的创建和引用 四AMS 中StartActivity的关键流程 一android 9 中AMS中StartActivity的关键流程 二android 11 中AMS中StartActivity的关键流程 五结语 一概览 本文只是初窥整体上只分析到第一层即可不会在细节上做深入。深入的部分在后续分享中按细分模块单独分析。 AMS和WMS从早期android开始就已经是android中最重要的组件。 WindowManagerService 基本介绍 WMS一直比较专一一直在窗口功能上迭代。 下面这一段是csdn创作助手给的 WindowManagerService 基本介绍 WindowManagerService是Android系统中的一个系统服务主要用于管理窗口相关的操作。它提供了以下功能 窗口管理WindowManagerService负责管理所有的窗口包括应用程序窗口、系统窗口、悬浮窗口、菜单等等。它负责将这些窗口排列在屏幕上并处理用户对窗口的操作例如拖动、缩放、隐藏等等。 窗口状态跟踪WindowManagerService跟踪所有窗口的状态包括窗口是否可见、是否有焦点、是否可以交互等等。这些状态对于系统和应用程序的行为是非常重要的。 窗口事件分发WindowManagerService负责接收用户的触摸事件并将它们分发给对应的窗口处理。它还负责将系统事件例如屏幕关闭、旋转传递给窗口。 总之WindowManagerService是Android系统中重要的一个系统服务负责窗口管理和事件分发等一系列操作对于系统和应用程序的正常运行都是非常重要的。 ActivityManagerService 基本介绍 AMS一开始就相对杂些但大体上是在四大组件和进程内存管理的范围内。到android 9的时候AMS中activity部分已经占了一半左右的代码量而到这个版本中activity和window之间的关系也进一步加强已经需要大量的接口来同步activity和window之间的状态。 下面这一段是csdn创作助手给的 ActivityManagerService 基本介绍 ActivityManagerService是Android系统中的一个核心组件它是Android系统的进程管理器负责管理系统中所有的应用程序进程和Activity生命周期其中也包括一些系统级进程。 ActivityManagerService的主要功能包括 管理应用程序进程ActivityManagerService负责启动、停止和管理所有的应用程序进程。当启动一个新的应用程序时ActivityManagerService会创建一个新的进程并将该进程分配给该应用程序。当应用程序不再需要时ActivityManagerService会停止该进程并释放其占用的系统资源。 管理Activity生命周期ActivityManagerService负责管理所有Activity的生命周期。当启动一个新的Activity时ActivityManagerService会负责调用该Activity的onCreate()、onStart()、onResume()等生命周期方法。当一个Activity不再处于前台时ActivityManagerService会调用该Activity的onPause()和onStop()等生命周期方法。 管理任务栈ActivityManagerService负责管理应用程序的任务栈即应用程序中所有Activity的堆栈。当启动一个新的Activity时ActivityManagerService会将其加入任务栈中并调整任务栈中Activity的顺序。当用户按下返回键时ActivityManagerService会从任务栈中移除当前Activity并回到上一个Activity。 监测系统状态ActivityManagerService还负责监测系统状态如电池状态、内存使用情况等并根据系统状态做出相应的调整以提高系统性能和用户体验。 总的来说ActivityManagerService是Android系统中非常重要的一个服务它在应用程序进程、Activity、任务栈等方面起着关键的作用为Android系统的稳定性和性能提供了重要的支持。 由上面 csdn创作助手 可以简单了解到ams、wms都是很大的模块本文只从最表层的类继承关系对像引用关系和最简单的启动流程这三部分入手做一个基础的分享。 在下面的分析中我将分会两部分的简单介绍 AMS/WMS 一以activity和window相关联的activity组件为一条主线。 二以AMS中非activity的其他组件为另一条主线。 下表展示了从android9及以前的AMS/WMS Activity相关核心成员的引入时间 AMS/WMS 核心成员引入版本 AMS引入版本WMS引入版本ConfigurationContainerandroid 9WindowContainerandroid 8ActivityStackSupervisorandroid 4.4RootWindowContainerandroid 8ActivityDisplayandroid 9DisplayContentandroid 4.2ActivityStackandroid 2.3.6TaskStackandroid 4.4TaskRecord至少 android 1.6Taskandroid 4.4ActivityRecordandroid 2.3.6AppWindowTokenandroid 4.0.3WindowStateandroid 4.0.3 从上表可以看出activity相关的类在android 4.4以前有比较频繁的变化从android 4.4到android8相对稳定了几个版本从android 8开始到android 11,activity又会经历一次大的变更。 下表展示了从android9及以前的AMS中非activity的其他组件核心成员引入时间 AMS 组件引入版本ProcessRecord至少 android 1.6ActiveServicesandroid 4.2ServiceRecord至少 android 1.6BroadcastRecord至少 android 1.6ContentProviderRecord至少 android 1.6 对比activity的表可以发现这部分主要组件成员在非常早的版本中就已经存在整体的演进活跃度是不如activity部分的。 二AMS及其关联的WMS中主要组件的类图和对像图 一android 9中AMS/WMS的类图和对像图 单独从activity的角度看其类关系图如下 单独从window的角度上看其类图关系如下 activity和window的对像图如下 非activity部分的对像图如下 二android 10中AMS/WMS的类图和对像图 单独从activity的角度看其类关系图如下 单独从window的角度上看其类图关系如下 activity和window的对像图如下 非activity部分的对像图如下 三android 11中AMS/WMS的类图和对像图 从android 11开始Activity 和 window开始融合。从类图上看就是把原本相对独立的Activity的类结构融合到了window的类结构中。 看android11 的对像图这种融合就更明显了从这个版本开始实际的Activity和Window是同一组数据ATMS和WMS都从RootWindowContainer去遍历自己的堆栈从各自的角度去设置和读取数据。 非activity部分的对像图如下 四android 12中AMS/WMS的类图和对像图 下图是android 12的Activity和window类结构相比于android11主要是重新定义了root的概念让DisplayContent成为每个Display中的root节点。 从对像图上看这种变化更明显当然在下面的类图中我刻意省略了DisplayContent和TaskDisplayArea之间的DisplayArea层次树。这样方便简单的表现出Activity的对像关系。 非activity部分的对像图如下 五android 13中AMS/WMS的类图和对像图 提示目前我没有对应平台可以调试android 13的版本所以下面的分析是完成基于代码的角度分析出来并未使用目标机验证过可能存在错漏的地方欢迎指正。 android 13基本上和android12保持致只新增了一个类。其他完全相同 在类结构没有大变的情况下目前分析的对像图和android 12保持一致 非activity部分的对像图如下 三AMS 初始化流程 在实际工作中这几个版本中最典型的是android 9 和android 11android 10虽然在目录结构上有很大的变化但在流程上可以参考android 9。 而android 11以后的版本大体上可以参考android 11的流程。android 10和android 11在初始化和启动activity的流程上都是有非常大的差别的。 一android 9 中AMS的初始化流程 1非activity组件的创建和引用 1 创建 ActivityManagerService在类的构造中准备好mProcessNamesmActiveUids等数据结构在ams的构造方法中创建 BroadcastQueueActiveServicesProviderMap完成最基本的初始化 2在setSystemProcess 方法中把ams注册为系统服务同时创建system_server进程的 ProcessRecord 3在 installSystemProviders 方法中处理系统 contentProvider的数据 4在systemReady 方法中会先处理上一次未关闭的java进程再通过lambda表示回到SystemServer 去启动systemui。处理完lambda表达式后再回来先启动长驻进程persist进程再启动home进程。 5最后在开机动画结束后发出开机完成的广播 2activity相关的类的创建和引用 1在ActivityManagerService 的构造 ActivityStackSupervisor并在ActivityManagerService 中直接引用。 2在setWindowManager 方法中从DisplayManagerService 那边获取当前设备的display列表再遍历display列表创建 ActivityDisplay并把ActivityDisplay 的实例存放到 ActivityStackSupervisor 的 mActivityDisplays。 3在 ActivityDisplay 的构造方法里最终还会去创建 DisplayContent 并在 DisplayContent的构造方法中直接把自己添加到  RootWindowContainer 的 mChildren 中。 二android 11 中AMS的初始化流程 1非activity组件的创建和引用 1 创建 ActivityManagerService在类的构造中准备好mProcessListmActiveUids等数据结构在ams的构造方法中依次创建 BroadcastQueueActiveServicesProviderMap完成最基本的初始化 2在setSystemProcess 方法中把ams注册为系统服务同时创建system_server进程的 ProcessRecord从android 10开始ProcessRecord不再由ams直接管理需通过ProcessList来间接管理所以这一步需通过 ProcessList 的  newProcessRecordLocked 方法完成。 3在 installSystemProviders 方法中处理系统 contentProvider的数据 4在systemReady 方法中会先处理上一次未关闭的java进程再通过lambda表示回到SystemServer 去启动systemui。处理完lambda表达式后再回来先启动长驻进程persist进程再启动home进程。 5最后在开机动画结束后发出开机完成的广播 2activity相关的类的创建和引用 1在ActivityTaskManagerService 的initialize方法里里创建 ActivityStackSupervisor并在ActivityTaskManagerService 中直接引用。 2在setWindowManager 方法中从DisplayManagerService 那边获取当前设备的display列表再遍历display列表创建 ActivityDisplay并把ActivityDisplay 的实例存放到 ActivityStackSupervisor 的 mActivityDisplays。 3在 ActivityDisplay 的构造方法里最终还会去创建 DisplayContent 再通过addChild把DisplayContent  添加到 RootWindowContainer 的 mChildren 中。 四AMS 中StartActivity的关键流程 一android 9 中AMS中StartActivity的关键流程 activity创建的关键流程在数据结构中最关键的就是  ActivityRecordTaskRecordActivityStack 和与之对应的AppWindowTokenTaskTaskStack的创建和引用添加 1创建 ActivityRecord 2创建 ActivityStack并在构造方法中再创建 TaskStack把 TaskStack 添加到 DisplayContent 的 TaskStackContainers 的 mChildren 中去最后再把 ActivityStack 添加到 ActivityDisplay的 mStacks  3创建 TaskRecord并把TaskRecord 添加到  ActivityStack 的mTaskHistory中去。 4通过 TaskRecord 的 createWindowContainer 创建Task并把Task添加到 TaskStack 的 mChildren中去。 5添加 ActivityRecord 到 TaskRecord 的 mActivities 中去。 6创建 AppWindowToken 并把 AppWindowToken 添加到 Task 的 mChildren中去。 前面几步中至少需要创建六个核心类流程一环又一环从ams到wms来回好几次才能完成activity创建的第一步。在目前的android中android9的activity启动流程应该是最长最复杂的。 二android 11 中AMS中StartActivity的关键流程 android11因为数据结构的改变创建activity的整体流程大大的简化了 1创建ActivityRecord 2 创建 ActivityStack 并添加到 TaskDisplayArea 的 mChildren中去 3添加 ActivityRecord 到 ActivityStack 的 mChildren中去 只需以上三步创建两个核心类activity启动的第一步中的主要数据就完成了。 五结语 从这几年android9-13几个版本中AMS/WMS的演进整体上是在增加了大量新feature的情况下又尽可能的在降低代码复杂度。 当然如果从更早的版本看activity和window在各自演进多年后在android9上达到了分进演进的极限从android 10开始走上了融合演进的方向。到android12时基本完成融合。后续新的演进会往什么方向走等android 14出来后再分析。 以上为个人所学多有错误遗漏请读者多多指正。
http://www.zqtcl.cn/news/304244/

相关文章:

  • 公司网站建设模块简介广17网站一起做网店
  • 外包网站多少钱柳市建设网站
  • 做外贸站推广全国网页制作大赛
  • 手机网站关键词排名微信小程序怎么做网页
  • 利用万网做网站wordpress过滤敏感
  • 大连 响应式网站制作郑州网站建设中国建设建设银行
  • 网站关键词布局关于静态网站开发相关新闻
  • 安徽新站优化网站建设哪些好
  • 网站详细页制作c2c模式的网站
  • 网站与网页之间的区别是什么意思通过微信发布诱导分享的美文或者集赞活动属于哪种网络营销方式
  • 可信网站代码想学做网站从哪里入手
  • 做公众号选择图片的网站wordpress怎么看代码
  • 个人 中小企业公司网站建设方案百度网页版链接地址
  • 青岛网站推广方案网线制作心得与体会
  • 杭州网站优化公司哈尔滨企业网站模板建站
  • 洛阳免费网站建设自己做网站最新视频教程
  • 网站备案查询 美橙网开发app需要的技术
  • 软件产品如何做网站推广昆山外贸网站建设推广
  • 景德镇市城市建设规划网站wordpress用不了了
  • 网站及新媒体建设宣传片wordpress 无法编辑主题
  • 东莞设计网站重庆做腋臭骑士网站
  • 什么软件可以搜索关键词精准网站信息优化的方式
  • 购物网站排名前十名山东泰安建筑工程集团有限公司
  • 源码下载站用vs网站开发
  • 自己做网站seo彩票的网站怎么做
  • 如何在网站后台找到死链接网站内页权重查询
  • 专业做国际网站网站开发的编程软件
  • 如何运营垂直网站网页工具大全
  • 如何让自己做的网站可以播放歌曲做培训网站
  • 做网站的毕业设计网站没备案怎么做淘宝客