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

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.lryc.cn/news/508836.html

相关文章:

  • vxe-table 虚拟滚动的动态响应
  • quasar dev 命令卡住很久
  • 黑盒RCE测试 异或测试
  • kotlin中泛型中in和out的区别
  • c# iis 解决跨域问题
  • MySQL版本对应的mysql-connector-java版本下载地址
  • 【读书笔记】《论语别裁》爱与罪
  • uniApp上传文件踩坑日记
  • Webhook 是什么?详解其工作原理
  • log4j2漏洞复现(CVE-2021-44228)
  • tcpdump抓包分析
  • LearnOpenGL学习(碰撞检测,粒子)
  • 操作系统(24)提高磁盘I/O速度的途径
  • C/C++基础知识复习(45)
  • 现代C++锁介绍
  • Squid代理服务器的安装使用
  • 爬虫学习案例8
  • 深入了解 CouchDB 的 Mango 查询:操作符和限制
  • 基于SSM(Spring + Spring MVC + MyBatis)框架搭建一个病人跟踪信息管理系统
  • U盘文件名变乱码:原因、恢复与预防全解析
  • EasyGBS国标GB28181公网平台P2P远程访问故障诊断:云端服务端排查指南
  • 一网多平面
  • animatediff 模型网盘分享
  • ansible play-book玩法
  • MySQL索引-索引的分类和创建
  • 如何给负载均衡平台做好安全防御
  • HR/TA/HRBP的关系
  • Docker环境下MySQL数据库持久化部署全攻略
  • 如何查看pad的console输出,以便我们更好的进行调试,查看并了解实际可能的问题。
  • react中使用ResizeObserver来观察元素的size变化