AMS深入浅出

2024-06-13 22:28
文章标签 ams 深入浅出

本文主要是介绍AMS深入浅出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目标:

1.

一、AMS启动流程

ActivityManagerService是

安卓10 以后,将AMS拆分出ActivityTaskManagerService。

1.1 启动入口

AMS是由SystemServer进程启动,在启动过程

startBootStripService,会启动AMS和ATMS服务。

SystemServiceManager:专门提供给SystemServer进程管理90多个服务的。

系统服务继承SystemService父类,系统服务都继承这个类,可以由SystemServiceManager统一管理这些服务。

1.2 AMS主要作用

AMS(包括ATMS)主要是提供给应用(Application)使用

二、AMS类结构设计

ActivityManagerService继承IActivityManager.Stub

创建一个静态内部类 ActivityManagerService.Lifecycle继承SystemService

publishService: 将AMS服务注册到ServiceManager,ServiceManager统一管理系统服务的访问Binder对象。

三、AMS职责

AMS职责

  • 管理四大组件

  四、Activity启动流程      

4.1 APP启动流程图

1)点击桌面应用,调用startActivity, 拿到AMS的binder,然后调用AMS.startActivity

2)启动进程时,判断目标Activity所在的进程是否存在。进程不存在,则发送消息给zygote进程,

3)zygote fork出一个新的子进程。

4)进程创建以后,attach到AMS,将子进程注册到AMS

5)AMS发送scheduleLauncherActivity执行Activity生命周期

4.2 进程的启动

这篇关于AMS深入浅出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1058592

相关文章

深入浅出「字符,字节和编码」

“字符与编码”是一个被经常讨论的话题。即使这样,时常出现的乱码仍然困扰着大家。虽然我们有很多的办法可以用来消除乱码,但我们并不一定理解这些办法的内在原理。而有的乱码产生的原因,实际上由于底层代码本身有问题所导致的。因此,不仅是初学者会对字符编码感到模糊,有的底层开发人员同样对字符编码缺乏准确的理解。 转载自: 原创文章,转载请保留或注明出处:http://www.regexlab.com/zh

【SpringBoot深入浅出系列】SpringBoot定义swagger2的UI界面

目录 一、访问http://localhost:8080/swagger-ui.html二、访问http://localhost:8080/doc.html三、访问http://localhost:8080/docs.html四、访问http://localhost:8080/document.html SpringBoot 定义 swagger2 的 UI 界面通过在 pom

【SpringBoot深入浅出系列】SpringBoot集成swagger2

目录 一、创建 SpringBoot 项目二、添加Maven依赖三、application.yml 中添加配置四、添加配置类五、Controller中添加注解六、测试 一、创建 SpringBoot 项目 步骤见https://blog.csdn.net/u012069313/article/details/122319305 二、添加Maven依赖 swagger2.9

【SpringCloud深入浅出系列】SpringCloud组件之集成Config实现本地配置中心

SpringCloud 组件之集成 Config 实现本地配置中心 一、项目说明二、实现本地配置中心1.创建配置文件2.添加配置3.启动测试 一、项目说明 之前已经在 SpringCloud 组件之集成Config实现分布式配置 文中实现了 Config 的分布式配置,通过读取 Gitee 远程仓库的方式获取配置信息,本文在该项目的基础上对代码进行修改,实现通过读取本地物理

【SpringCloud深入浅出系列】SpringCloud组件之集成Config实现配置自动刷新

SpringCloud 组件之集成 Config 实现配置自动刷新 一、项目说明二、实现配置自动刷新1.添加依赖2.添加配置3.控制类添加注解(1).新建数据配置类(2).修改控制类 4.启动测试 一、项目说明 之前已经在 SpringCloud 组件之集成 Config 实现分布式配置 文中实现了 Config 的分布式配置,存在以下问题: 对 gitee 远程仓库中的

【SpringCloud深入浅出系列】SpringCloud组件之集成Config实现分布式配置

SpringCloud 组件之集成 Config 实现分布式配置 一、Config 是什么?二、创建项目实现分布式配置1.项目说明2.创建 Gitee 仓库并新建三个配置文件(1).创建 Gitee 仓库 springcloud-config(2).新建三个配置文件 3.创建 Maven 空项目 config4.创建模块 eureka-server(1).添加依赖(2).添加配置(3).启动

【SpringBoot深入浅出系列】SpringBoot之多环境配置

目录 一、前言二、配置方法三、配置步骤1.创建子配置文件2.创建主配置文件3.运行 一、前言 Spring Boot 多环境配置方式有多种,以下仅介绍其中最常用的一种方式。 二、配置方法 配置一个主配置文件和多个子配置文件,多个子配置文件的格式为:application-{profile}.yml 或者 application-{profile}.properties,

【SpringBoot深入浅出系列】SpringBoot之集成JUnit5+MockMvc测试Controller

目录 一、写在前面二、创建项目集成 JUnit 5 测试 Controller1.项目说明2.修改测试类 LoginControllerTest3.运行测试 一、写在前面 本文在 SpringBoot之集成JUnit5进行单元测试 一文基础上进行拓展延伸,实现对 Controller 类的测试。 二、创建项目集成 JUnit 5 测试 Controller 1.项目说明

深入浅出Netty:高性能网络应用框架的原理与实践

深入浅出Netty:高性能网络应用框架的原理与实践 1. Netty简介 Netty是一个基于Java的异步事件驱动的网络应用框架,广泛用于构建高性能、高可扩展性的网络服务器和客户端。它提供对多种协议(如TCP、UDP、SSL等)的支持,适用于各种网络通信场景。 2. 核心组件 Channel:代表一个到远程地址的连接,负责数据读写和连接管理。EventLoop和EventLoopGrou

(转)深入浅出Mybatis---强大的动态SQL

转自:https://www.cnblogs.com/dongying/p/4092662.html 1. if: 你们能判断,我也能判断! 作为程序猿,谁不懂 if ! 在mybatis中也能用 if 啦: <select id="findUserById" resultType="user">select * from user where <if test="id != null