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 进程的启动

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

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

相关文章

外卖跑腿APP开发指南:探索同城O2O系统源码技术要点

同城O2O系统作为这类服务的技术支撑平台,承载了外卖跑腿APP的开发与运行。本篇文章,小编将深入探讨同城O2O系统源码的技术要点,为外卖跑腿APP的开发提供指导与参考。 一、同城O2O系统概述 同城O2O系统是一种基于地理位置的线上到线下服务平台…

“论多源数据集成及应用”必过范文,突击2024软考高项论文

论文真题 在如今信息爆炸的时代,企业、组织和个人面临着大量的数据。这些数据来自不同的渠道和资源,包括传感器、社交媒体、销售记录等,它们各自具有不同的数据格式、分布和存储方式。因此如何收集、整理和清洗数据,以建立一个一…

阅读源码解析dynamic-datasource-spring-boot-starter中是如何动态切换数据源的

dynamic-datasource-spring-boot-starter是苞米豆提供的一个动态切换数据源的工具,可以帮助企业或者个人实现多数据源的切换,这里通过阅读源码的方式解析是如何动态的切换数据源的,采用的版本是3.5.1 源码解析 通过官方文档可以看到&#x…

vue 和 js写屏幕自适应

实现屏幕自适应的方式有很多种,可以通过插件本身提供的方法,可以通过flex布局等,今天我们来写写通过js实现屏幕自适应。 以下是在vue中实现的屏幕自适应 首先在data中定义一下屏幕的默认大小和缩放比例 然后在mounted中获取窗口的内置宽高&a…

揭秘软件测试秘籍:测试用例设计方法大揭秘

文章目录 引言一、等价类划分1.1 定义1.2 步骤1.3 等价类划分优点和缺点 二、边界值分析法2.1 定义2.2 步骤2.3 边界值分析法的优点和缺点 三、判定表法3.1 定义3.2 步骤3.3 判定表组成不分3.4 判定表的优点和缺点 四、正交实验法4.1 定义4.2 步骤4.3 正交实验法的优点和缺点 五…

2024.05.31 校招 实习 内推 面经

绿*泡*泡VX: neituijunsir 交流*裙 ,内推/实习/校招汇总表格 1、实习 | 上汽集团零束科技2024「ZONE引擎」(内推) 实习 | 上汽集团零束科技2024「ZONE引擎」计划正式启动(内推) 2、实习 | 华为上海海思…

基于Verilog表达的FSM状态机

基于Verilog表达的FSM状态机 1 FSM1.1 Intro1.2 Why FSM?1.3 How to do 在这里聚焦基于Verilog的三段式状态机编程; 1 FSM 1.1 Intro 状态机是一种代码实现功能的范式;一切皆可状态机; 状态机编程四要素:– 1.状态State&#…

基于51单片机的简易温控水杯恒温杯仿真设计( proteus仿真+程序+设计报告+讲解视频)

基于51单片机的简易温控水杯恒温杯仿真设计( proteus仿真程序设计报告讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0099 1. 主要功能: 基于51单片机的简易温控水杯恒温…

Hudi extraMetadata 研究总结

前言 研究总结 Hudi extraMetadata ,记录研究过程。主要目的是通过 extraMetadata 保存 source 表的 commitTime (checkpoint), 来实现增量读Hudi表写Hudi表时,保存增量读状态的事务性,实现类似于流任务中的 exactly-once 背景需求 有个需求:增量读Hudi表关联其他Hudi…

cuda 架构设置

import torch torch.cuda.get_device_capability(0) 添加cmake options: -DCMAKE_CUDA_ARCHITECTURES86 -DCMAKE_CUDA_COMPILER/usr/local/cuda-11.8/bin/nvcc cmake工程出现“CMAKE_CUDA_ARCHITECTURES must be non-empty if set.“的解决方法_failed to detec…

振动棒出口欧盟CE认证测试项目介绍

振动棒出口欧盟CE认证测试项目介绍 一、CE认证概述 CE认证是欧盟市场的一种强制性认证,主要用于确保产品符合欧盟内的基本安全、健康和环保要求。对于许多产品,特别是电子电气产品,CE标志是进入欧盟市场的必要条件。振动棒作为成人用品&…

【附带源码】机械臂MoveIt2极简教程(六)、第三个demo -机械臂的避障规划

系列文章目录 【附带源码】机械臂MoveIt2极简教程(一)、moveit2安装 【附带源码】机械臂MoveIt2极简教程(二)、move_group交互 【附带源码】机械臂MoveIt2极简教程(三)、URDF/SRDF介绍 【附带源码】机械臂MoveIt2极简教程(四)、第一个入门demo 【附带源码】机械臂Move…

中介子方程十四

X$XFX$XEXyXαXiX$XαXiXrXkXtXyX$XpXVX$XdXuXWXαXWXuXdX$XVXpX$XyXtXkXrXiXαX$XiXαXyXEX$XFX$XEXyXαXiX$XαXiXrXkXtXyX$XpXVX$XdXuXWXαXWXuXdX$XVXpX$XyXtXkXrXiXαX$XiXαXyXEX$XαXηXtXαX$XWXyX$XyXWX$XpXαXqXηX$XeXαXhX$XdX$XpX$XdX$XyXeXαX$XEXyXαXiX$XαXiX…

Java 获取客户端 IP 地址【工具类】

Java 获取客户端 IP 地址 import javax.servlet.http.HttpServletRequest; import java.net.InetAddress;/*** 网络工具类*/ public class NetUtils {/*** 获取客户端 IP 地址** param request 请求* return {link String}*/public static String getIpAddress(HttpServletReq…

Apache Flink 如何保证 Exactly-Once 语义

一、引言 在大数据处理中,数据的一致性和准确性是至关重要的。Apache Flink 是一个流处理和批处理的开源平台,它提供了丰富的语义保证,其中之一就是 Exactly-Once 语义。Exactly-Once 语义确保每个事件或记录只被处理一次,即使在…

源码编译构建LAMP

Apache 起源 源于A Patchy Server,著名的开源Web服务软件1995年时,发布Apache服务程序的1.0版本由Apache软件基金会(ASF)负责维护最新的名称为“Apache HTTP Server”官方站点:http://httpd.apache.org/ 主要特点 开发源代码/…

Mysql union语句

开源项目SDK:https://github.com/mingyang66/spring-parent 个人文档:https://mingyang66.github.io/raccoon-docs/#/ mysql union操作符用于连接两个以上的select语句的结果组合到一个结果集,并去除重复的行,每个select语句的雷叔…

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException异常问题如何解决?

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: SELECT command denied to user XXXXXXX for table sys_users这是一个 MySQL 权限问题,表示用户 “XXXXXX” 没有对表 “sys_users” 执行 SELECT 操作的权限。 解决方案: 检查用户权限&am…

【课程总结】Day8(上):深度学习基本流程

前言 在上一篇课程《【课程总结】Day7:深度学习概述》中,我们了解到: 模型训练过程→本质上是固定w和b参数的过程;让模型更好→本质上就是让模型的损失值loss变小;让loss变小→本质上就是求loss函数的最小值&#xf…

函数用于将字符串反转以及函数的作用

在C语言中&#xff0c;你可以通过交换字符串中字符的位置来实现字符串的反转。以下是一个简单的函数示例&#xff0c;用于反转一个字符串&#xff1a; c复制代码 #include <stdio.h> #include <string.h> void reverse_string(char *str) { char *start str;…