Android面试题之ActivityManagerService的启动流程

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点

SystemServer启动
  1. 创建SystemContex 用于加载系统相关的资源,比如theme,android命名空间下的资源等
  2. 创建引导服务,安装器Installer服务, AMS就属于引导服务,还有电源管理服务PMS
  3. 启动核心服务和其他服务,总共得有80多个以上
  4. AMS启动也分为几个阶段,类似生命周期
AMS启动和初始化
  1. SystemServer通过startService创建Lifecycle对象,
  2. Lifecycle里构造方法里通过new创建AMS
  3. AMS 会创建“android.ui”线程、创建ActiveServices管理activity、创建ActivityStackSupervisor对象管理activity栈
  4. AMS会创建前台广播和后台广播队列、provider的Map等
  5. 电量统计服务、进程相关服务
  6. VrConroller虚拟现实相关
  7. mActivityConroller
  8. RecentTask,最近的任务列表
  9. ClientLifeCycleManager API28之前是没有,用来控制activity的生命周期
  10. watchDog守护进程(继承自Thread是一个线程)
  11. 移除所有的应用进程(AMS刚刚启动),启动电池服务
12.setSystemProcess

mActivityManagerService.setSystemProcess 设置SystemServer,添加了各种服务:

  • permission权限服务、内存服务meminfo、进程统计服务procstats、进程服务processinfo、数据库服务等
  • oomAdj服务,跟杀进程有关
13.安装系统相关的Provider
  • 安装Provider
  • 系统设置相关的监听,字体相关的监听,开发者选项相关监听
  1. 调用WMS的main方法创建和初始化WMS,然后AMS设置WMS,将AMS与WMS关联起来
  2. 和网络相关的服务关联起来
16. AMS调用SystemReady,服务基本启动完成,准备启动系统UI
  • startSystemUi启动系统UI
  • 执行一些列服务的SystemReady方法
  • startHomeActivityLocked方法,启动Launcher
进程对比
  • init进程:没有framework的资源,主要任务是解析init.rc文件,创建各种服务进程
  • zygote进程:会加载一个进程所需要的必要资源,比如preloadClass、VM虚拟机;APP的进程从这里fork出
  • system_server进程:从zygote进程fork出来,创建大量服务,比如AMS等,加载androidFramework所需要的资源,创建context;也有可能会创建其他的进程,有些服务可能是处于单独的进程
参考书

这里介绍几本系统层面的参考书,都是比较有名的
1、柯元旦教授的《Android内核剖析》

《Android内核剖析》是柯元旦教授编著的一本深入解析Android操作系统内核的专著。柯元旦教授是中国计算机领域的知名专家,他在操作系统和内核层面有着丰富的研究和实践经验。这本书针对Android系统,从底层内核到高层应用,提供了全面而深入的解析。

2、罗升阳 的《Android系统源代码情景分析》

《Android系统源代码情景分析》是罗升阳编著的一本详尽解析Android系统源代码的书籍。罗升阳是一位深耕Android系统的专家,他在操作系统和Android平台方面有深厚的技术积累和丰富的从业经验。这本书通过剖析实际的源代码,帮助读者理解Android系统的框架和实现机制。


欢迎关注我的公众号查看更多精彩文章!

AntDream

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/27153.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

02 Pytorch_NLP

1. N-gram n决定关联信息 2. TF____IDF TF:词频 IDF:逆向序列 假如:TF * IDF 就是当前的文件,那么乘积反而更大! 因为它只出现在 特定的文章中! TF-IDF 简介 TF-IDF(Term Frequency-Inverse…

css入门基础

目录 1. CSS前景 2.什么是CSS 3.CSS发展史 4.CSS的3种样式格式 5.CSS 的语法 6.CSS的字体样式 7.选择器类型 8.CSS外观属性 1. CSS前景 从HTML被发明开始,样式就以各种形式存在。不同的浏览器结合它们各自的样式语言为用户提供页面效果的控制。最初的HTML只…

专业学习|博弈论-博弈论概述

(一)认识博弈论:解析复杂决策与策略 (1)认识博弈 博弈论广泛应用于分析个体间因利益冲突而产生的决策问题。通过构建不同模型来探讨如经贸关系、军事威胁等问题,旨在寻找均衡解并提供新知,相较…

mathematical-expression-cpp | C++ 数学表达式解析库

数学表达式-cpp Switch to English Document 介绍 本框架是一种针对数学公式解析的有效工具,能够通过C的API解析包含嵌套函数,包含函数,数列步长累加等数学公式,返回值是一个数值的结果对象,同时也可以进行比较运算…

idea在空工程中添加新模块并测试的步骤

ServicesTest是空的工程,没有pom文件。现在需要在ServicesTest目录下添加新模块作为新的工程,目的是写一下别的技术功能。 原先目录结构,ServicesTest是空的工程,没有pom文件。下面的几个模块是新的工程,相互独立。 1.…

LLM大模型的挑战与未来,挑战大但是机遇更大!

大模型必然是未来很长一段时间我们工作生活的一部分,而对于这样一个与我们生活高度同频互动的“大家伙”,除了性能、效率、成本等问题外,大规模语言模型的安全问题几乎是大模型所面对的所有挑战之中的重中之重,机器幻觉是大模型目…

C++ (week6、7):Linux系统编程4:网络

文章目录 四、网络和网络编程(一) 网络协议1.基础概念2.网络协议和网络模型:OSI七层模型、TCP/IP四层协议3.TCP协议(1)TCP协议的特点(2)TCP协议的首部格式(3)TCP状态图(4)为什么要三次握手?2次行不行?(5)为什么要四次挥手?(6)快速…

软件测试分类介绍

大家好,软件测试是确保软件质量的关键环节之一,通过对软件系统的各个方面进行测试,可以发现和解决潜在的问题,提高软件的稳定性、可靠性和用户满意度。在软件测试领域,根据测试的目的、方法和对象的不同,可…

Python业务规则引擎库之rules使用详解

概要 在软件开发中,业务规则引擎是一种重要的工具,可以帮助开发者将复杂的业务逻辑从代码中解耦出来,并以更直观的方式进行管理和维护。rules 是一个轻量级的 Python 库,专门用于定义和执行业务规则。它提供了一种简洁且强大的方式来管理应用程序中的规则逻辑,使代码更加…

C++ 引用 - 引用的特点|在优化程序上的作用

引用是C 的一个别名机制,所谓别名,就是同一块内存共用多个名字,每个名字都指的是这片空间,通过这些别名都能访问到同样的一块空间。 就像鲁迅和周树人是同一个人。 ——鲁迅 一、引用的基本用法 int a 10; int& ref a; // …

Django序列化器详解:普通序列化器与模型序列化器的选择与运用

系列文章目录 Django入门全攻略:从零搭建你的第一个Web项目Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解Django ORM深度游&#xff…

充电桩出口:跨国贸易的机遇与挑战之旅

在新能源浪潮席卷全球的今天,充电桩作为电动汽车的“加油站”,正逐渐从幕后走向台前。 而在这场跨国贸易的舞台上,充电桩的出口之路,既充满了诱人的机遇,也伴随着不小的挑战。 机遇,源自日益增长的全球市场…

免费听歌,电脑或手机免费听歌,落雪音乐安装详细步骤

近年来,由于资本的力量导致各种收费,看个电视想听歌都必须要付费了,否则你听不完整,吃相非常难看,特别是电视,吸血鬼式吸收各种会员费,各种APP也是铺天盖地的广告,渐渐迷失了自我&am…

两个螺旋面的交线

已知轴截面齿形,先得到螺旋面 然后在计算出对应的端面齿形 在用端面齿形来计算和另一个螺旋面的相交曲线。 三维验证这个方法可行!

喜大普奔,AI绘画SD3终于开源了,AI绘画又添新利器!【附模型下载和安装包】

sd3终于开源了! 没错就是stablediffusion 3.0版本!这是stability迄今为止最先进最复杂图像生成模型。 这次开源的是medium版本,总共有三个型号的模型,下面我们来详细的说下sd3的功能特点以及不同型号区别、安装方法!…

HTML静态网页成品作业(HTML+CSS)—— 家乡山西介绍网页(3个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有6个页面。 二、作品演示 三、代…

专业设计师推荐的20条用户体验设计黄金准则

在当今的数字世界中,用户体验设计已经成为商业成功的关键因素。它可以实现或摧毁一个产品。今天,我们将讨论该领域的20个基本原则。这些用户体验设计原则不仅被顶级工厂设计师广泛使用,而且为您在设计过程中提供有价值的指导。 1. 以用户为中…

共绘财富与时间画卷,ATFX携手Haofa腕表,开启跨界新篇章

在当前激烈的市场竞争中,品牌创新和多元化、本地化发展已成为企业突破重围,赢得用户和市场份额的关键。作为差价合约行业领军品牌,ATFX勇于突破自我,为探索更多的市场可能性,通过跨界合作、联合营销的策略,…

物联网概念

物联网 物联网简介物联网体系结构物联网体系结构定义物联网体系结构设计原则物联网体系结构四层物联网体系结构感知控制层数据传输层数据处理层应用决策层 物联网关键技术感知标识技术网络与通信技术云计算技术安全技术 已有物联网相关应用架构无线传感器网络的体系结构EPC/UID…