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

android9-activity启动流程

Android 9 Activity启动流程分为以下核心阶段,流程涉及多进程协作:

🔄 一、Launcher发起请求(用户操作阶段)

  1. 点击应用图标
    Launcher作为特殊Activity,通过startActivity()向AMS发送启动请求,触发跨进程通信。
  2. 创建Intent对象
    明确目标Activity类名或Action,封装启动信息。

📡 二、AMS处理阶段(系统服务层)

  1. AMS验证与进程判断
    • 通过PMS验证Activity合法性(匹配Intent)
    • 检查目标进程是否存在:
      • 进程存在:直接调用realStartActivityLocked()启动
      • 进程不存在:通过Socket通知Zygote fork新进程
  2. 暂停当前Activity
    AMS通知Launcher暂停(发送PAUSE_ACTIVITY消息)。

️ 三、进程创建与初始化(Zygote阶段)

  1. Zygote fork新进程
    创建应用进程后,初始化ActivityThread主线程。
  2. 绑定应用进程
    • ActivityThread.attach()绑定到AMS
    • 创建Application对象并调用onCreate()

🚀 四、Activity实例化与生命周期(目标进程)

  1. AMS发送启动指令
    通过ApplicationThread.scheduleLaunchActivity()跨进程通知。
  2. 处理启动消息
    • ActivityThread.H处理LAUNCH_ACTIVITY消息
    • 反射创建Activity实例。
  3. 生命周期回调
    依次执行:
    onCreate
    onStart
    onResume
    其中onCreate()完成布局加载(setContentView())。

️ 五、界面渲染(WindowManager与View系统)

  1. 视图树构建
    通过LayoutInflater解析XML布局。
  2. 测量/布局/绘制
    ViewRootImpl驱动三大流程。
  3. 同步显示
    SurfaceFlinger合成图层并输出到屏幕。

⚙️ 关键机制说明

阶段核心组件跨进程通信方式
Launcher→AMSInstrumentationBinder IPC
AMS→ZygoteZygoteProcessSocket
AMS→应用ApplicationThreadBinder IPC

流程优化点:若Activity声明singleTask等特殊启动模式,AMS会复用已有任务栈。
流程图:
在这里插入图片描述

引用链接:
1.Android 9 Activity启动流程 - 51CTO博客
2.《Android Activity启动流程详解》 - CSDN博客
3.Activity 原生启动流程分析 - 微信公众平台
4.Android 9 activity 启动流程 安卓设置启动activity - 51CTO博客
5.Activity 启动流程(一)—— Launcher 阶段 - 掘金开发者社区
6.【鼠】安卓学习杂记(二十九)——Android之Activity启动流程 - 腾讯云
7.Android面试之Activity启动流程简述 - cloud.tencent.com.cn
8.探索Android Activity启动详细流程:从Launcher到新进程的通信与创建 - 泽野漫记
9.安卓Activity启动模式解析:标准模式的运作原理 - 雾霭藏青山
10.【android(安卓)零基础】29.Activity详解 - 哔哩哔哩
11.4.5 Activity的任务栈和启动模式 - 哔哩哔哩
12.手动创建Activity并配置界面 - 好像一直Lucky
13.Android系统是如何启动的?启动流程是什么样的? - 哔哩哔哩
14.【插件化10】面试题:简述Activity的启动流程 - 哔哩哔哩
15.【插件化8】Activity的启动流程详解及手写实现 - 哔哩哔哩
16.Activity 启动流程梳理 - CSDN博客
17.死磕Android_App 启动过程(含 Activity 启动过程) - 潇风寒月
18.Android | Activity 启动流程分析_android activity工作流程-CSDN博客 - CSDN博客
19.Activity启动流程分析(Android 9.0)_android9 activity 调整流程-CSDN博客 - CSDN博客
20.Activity的启动过程(Android 9 API 28) - 51CTO博客
21.android 打开一个activity android启动activity流程 - 51CTO博客
22.首发于 - OpenHarmony小瓜
23.Android Framework源码面试:Activity启动流程 - 小帅
24.Android四大组件的工作过程,原理解析 - Java码农
25.Android应用启动流程分析 - 小帅
26.Android10.0 Acivity 的启动流程源码是怎么样的? - 编程扫地僧
27.【framework】Activity启动流程 - LittleFatSheep

http://www.lryc.cn/news/604657.html

相关文章:

  • 2025年湖北中级注册安全工程师报考那些事
  • RHCA学习概述
  • Spark的累加器(Accumulator)
  • django-3模型操作
  • 【昇腾】基于Atlas 200I DK A2开发者套件修改usb0的默认IP重启后被恢复的问题处理_20250730
  • 【MySQL】MySQL索引—B树/B+树
  • 基于 Hadoop 生态圈的数据仓库实践 —— OLAP 与数据可视化(五)
  • wps批量让浮动在表格的图片跟随单元格移动和调整大小
  • 如何在生成式引擎优化(GEO)中取得成功
  • MySQL 9 Group Replication维护
  • 疯狂星期四文案网第24天运营日记
  • 力扣 hot100 Day60
  • Day 26 函数专题1:函数定义与参数
  • 少林寺用什么数据库?
  • pycharm的一些小细节
  • Linux:haproxy
  • jmeter实战案例
  • JavaWeb 进阶:Vue.js 与 Spring Boot 全栈开发实战(Java 开发者视角)
  • 基于React+Express的前后端分离的个人相册管理系统
  • 使用Docker 在Rocky Linux 9.5上在线安装Dify
  • 八股文场景题
  • 从一开始的网络攻防(十四):WAF绕过
  • KONG API Gateway中的核心概念
  • 聊聊如何判断发现的缺陷属于前后端
  • 【Dolphinscheduler】docker搭建dolphinscheduler集群并与安全的CDH集成
  • winsock socket通讯为什么UDP服务器无法获取客户端IP?
  • UDP通讯和TCP通讯的区别-UDP(用户数据报协议)和 TCP(传输控制协议)
  • BeeWorks Meet:私有化部署,重塑高安全需求行业的视频会议体验
  • 云计算:一场关于“数字水电煤”的革命与未来
  • LoongCollector 安全日志接入实践:企业级防火墙场景的日志标准化采集