aosp15 - Activity生命周期切换

本文探查的是,从App冷启动后到MainActivity生命周期切换的系统实现。

在这里插入图片描述

调试步骤

  1. 在com.android.server.wm.RootWindowContainer#attachApplication 方法下断点,为了attach目标进程
  2. 在com.android.server.wm.ActivityTaskSupervisor#realStartActivityLocked 方法下断点,为了进入‘3’
  3. 在com.android.server.wm.ClientLifecycleManager#scheduleTransactionAndLifecycleItems(
    • . android.app.IApplicationThread, // 目标进程: IApplicationThread S t u b Stub StubProxy
    • android.app.servertransaction.ClientTransactionItem, // LauncherActivityItem
    • android.app.servertransaction.ActivityLifecycleItem, boolean) // ResumeActivityItem
  4. 在ActivityThread H H HhandleMessage的EXECUTE_TRANSACTION判断处断点,所有的ClientTransaction都可以从这里查看
    • 可以看到 TopResumedActivityChangeItem,WindowStateResizeItem等ActivityTransactionItem的子类实现
    • 也可看到 LaunchActivityItem ,这是ClientTransactionItem的子类
    • 也可看到 ResumeActivityItem,等生命周期,这些是ActivityLifeCycleItem的子类,ActivityTransactionItem的孙子类
  5. 在android.app.servertransaction.TransactionExecutor#executeLifecycleItem 里下断点,看代码:
// Cycle to the state right before the final requested state. 进入最终状态(比如:resume)前,执行的ClientTransatction(即:start)
cycleToPath(r, lifecycleItem.getTargetState(), true /* excludeLastState */, transaction);// Execute the final transition with proper parameters. 
lifecycleItem.execute(mTransactionHandler, mPendingActions);
lifecycleItem.postExecute(mTransactionHandler, mPendingActions);
  1. android.app.servertransaction.TransactionExecutorHelper#getLifecyclePath
    最终在这里,看到生命周期的转换关系。

ClientTransaction相关类图

/aosp15/frameworks/base/core/java/android/app/servertransaction

在这里插入图片描述

ClienTransaction

注意这两个属性

/*** List of transaction items that should be executed in order. Including both* {@link ActivityLifecycleItem} and other {@link ClientTransactionItem}.* ClientTransaction列表,顺序执行*/
@Nullable
private List<ClientTransactionItem> mTransactionItems;
/*** Final lifecycle state in which the client activity should be after the transaction is executed.* activity的最终生命周期状态*/ 
@Nullable
private ActivityLifecycleItem mLifecycleStateRequest;

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

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

相关文章

【libuv】Fargo信令1:client发connect消息给到server

tcp 单机测试,进行模拟 (借助copilot实现) 【Fargo】28:字节序列client发connect消息给到serverserver 收到后回复ack给到客户端程序借助copilot实现。项目构建 Console依赖于Halo.dll提供的api,Halo 依赖于 Immanuel, 运行效果 遗留问题 客户端似乎么有逻辑收到ack做处理各…

libmodbus安装使用

要配置和编译 libmodbus&#xff0c;您需要确保安装了所有必要的依赖项&#xff0c;并按照正确的步骤进行操作。以下是详细的环境配置和编译指南&#xff0c;适用于不同的操作系统。 1. Linux (Debian/Ubuntu) 安装依赖项 首先&#xff0c;确保您的包列表是最新的&#xff1…

猫咪睡眠:萌态背后的奥秘与启示

猫咪的睡眠&#xff0c;犹如一本充满趣味与奥秘的小书&#xff0c;每一页都写满了它们独特的习性与本能。 猫咪堪称 “睡眠大师”&#xff0c;睡眠时间之长令人咋舌&#xff0c;一天中大约有 12 - 16 个小时在梦乡中度过&#xff0c;幼猫和老年猫甚至能睡更久。它们似乎深谙放…

关于小程序内嵌h5打开新的小程序

关于小程序内嵌h5打开新的小程序 三种方式 https://juejin.cn/post/7055551463489011749 只依赖于h5本身的就是 https://huaweicloud.csdn.net/64f97ebb6b896f66024ca16c.html https://juejin.cn/post/7055551463489011749 navigateToMiniProgram 故小程序webview里的h5无法…

免费GIS工具箱:轻松将glb文件转换成3DTiles文件

在GIS地理信息系统领域&#xff0c;GLB文件作为GLTF文件的二进制版本&#xff0c;主要用于3D模型数据的存储和展示。然而&#xff0c;GLB文件的使用频率相对较低&#xff0c;这是因为GIS系统主要处理的是地理空间数据&#xff0c;如地图、地形、地貌、植被、水系等&#xff0c;…

音视频入门基础:MPEG2-TS专题(21)——FFmpeg源码中,获取TS流的视频信息的实现

一、引言 通过FFmpeg命令可以获取到TS文件/TS流的视频压缩编码格式、色彩格式&#xff08;像素格式&#xff09;、分辨率、帧率信息&#xff1a; ./ffmpeg -i XXX.ts 本文以H.264为例讲述FFmpeg到底是从哪个地方获取到这些视频信息的。 二、视频压缩编码格式 FFmpeg获取TS文…

BenchmarkSQL使用教程

1. TPC-C介绍 Transaction Processing Performance Council (TPC) 事务处理性能委员会&#xff0c;是一家非盈利IT组织&#xff0c;他们的目的是定义数据库基准并且向产业界推广可验证的数据库性能测试。而TPC-C最后一个C代表的是压测模型的版本&#xff0c;在这之前还有TPC-A、…

火山引擎发布数据飞轮 2.0,AI 重塑企业数据消费

12 月 18 日&#xff0c;在 2024 冬季火山引擎 FORCE 原动力大会上&#xff0c;火山引擎数智平台&#xff08;VeDI&#xff09;正式升级发布数据飞轮 2.0 模式。 延续去年 4 月发布的数据飞轮“以数据消费促资产建设&#xff0c;以数据消费助业务发展”的核心内涵&#xff0c;…

LLaMA-Factory 单卡3080*2 deepspeed zero3 微调Qwen2.5-7B-Instruct

环境安装 git clone https://gitcode.com/gh_mirrors/ll/LLaMA-Factory.git 下载模型 pip install modelscope modelscope download --model Qwen/Qwen2.5-7B-Instruct --local_dir /root/autodl-tmp/models/Qwen/Qwen2.5-7B-Instruct 微调 llamafactory-cli train \--st…

合并比对学习资料

目录 ContractComparison已开源: ContractComparison已开源: GitHub - UnstoppableCurry/ContractComparison: Comparison of General Chinese Contracts with OCR Pytorch

全速下载 50M/S,不限速下载就是香

近几年来虽说各大网盘层出不穷&#xff0c;各有乾坤&#xff0c;而这其中某些网盘对于网速限制非常严重&#xff0c;这也是很多小伙伴一直吐槽的点&#xff0c;并且某些网盘下载文件还需要安装客户端&#xff0c;并且每家的限速方式不同&#xff0c;有的限速取决于文件大小&…

回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测

回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效…

RunCam WiFiLink连接手机图传测试

RunCam WiFiLink中文手册从这里下载 一、摄像头端 1.连接天线&#xff08;易忘&#xff09; 2.打开摄像头前面的盖子&#xff08;易忘&#xff09; 3.接上直流电源&#xff0c;红线为正&#xff0c;黑线为负 4.直流电源设置电压为14v&#xff0c;电流为3.15A&#xff0c; 通…

AI的进阶之路:从机器学习到深度学习的演变(二)

AI的进阶之路&#xff1a;从机器学习到深度学习的演变&#xff08;一&#xff09; 三、机器学习&#xff08;ML&#xff09;&#xff1a;AI的核心驱动力 3.1 机器学习的核心原理 机器学习&#xff08;Machine Learning, ML&#xff09;突破了传统编程的局限&#xff0c;它不再…

WordPress 去除?v= 动态后缀

Wordpress url后面带有?vxxx的参数符&#xff0c;这种现象出现在安装了Woocommerce插件的店铺类型站点上&#xff0c;参数的作用是帮助系统根据用户的geographic定位计算 tax and shipping fee。 如何删除&#xff1f; 后台进入WooCommerce Settings &#xff0c;将根据IP定…

Spring Cloud Gateway 源码

Spring Cloud Gateway 架构图 按照以上架构图&#xff0c;请求的处理流程&#xff1a; 1.客户端请求发送到网关 DispatcherHandler 2.网关通过 HandlerMapping 找到相应的 WebHandler 3.WebHandler生成FilterChain过滤器链执行所有的过滤器 4.返回Response结果 自动装配类Gat…

数据结构漫游记:初识vector

​ 嘿&#xff0c;各位技术潮人&#xff01;好久不见甚是想念。生活就像一场奇妙冒险&#xff0c;而编程就是那把超酷的万能钥匙。此刻&#xff0c;阳光洒在键盘上&#xff0c;灵感在指尖跳跃&#xff0c;让我们抛开一切束缚&#xff0c;给平淡日子加点料&#xff0c;注入满满的…

go-zero负载均衡实现原理

1. 什么是负载均衡 关于微服务分布式及集群的概念即定义&#xff0c;在业界中这些往往会同时在同一个项目中&#xff0c;而集群在微服务中主要为服务的运行保障高可用。 比如&#xff1a;在当前的项目情况下&#xff0c;我们可能针对用户服务部署两台服务以保障用户服务的高可用…

【Rust自学】4.4. 引用与借用

4.4.0 写在正文之前 这一节的内容其实就相当于C的智能指针移动语义在编译器层面做了一些约束。Rust中引用的写法通过编译器的约束写成了C中最理想、最规范的指针写法。所以学过C的人对这一章肯定会非常熟悉。 喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文…

Apache Solr RCE(CVE-2017-12629)--vulhub

Apache Solr 远程命令执行漏洞&#xff08;CVE-2017-12629&#xff09; Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发&#xff0c;主要基于 HTTP 和 Apache Lucene 实现。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个…