Activity启动流程详解

2023-11-09

普通Activity创建也就是平常我们在代码中采用startActivity(Intent intent)方法来创建Activity的方式。总体流程如下图:
在这里插入图片描述
启动过程设计到两个进程:本地进程和系统服务进程。本地进程也就是我们的应用所在进程,系统服务进程为所有应用共用的服务进程。整体思路

  1. startActivity(Intent intent) activity向Instrumentation请求创建

  2. Instrumentation通过AMS在本地进程的IBinder接口,访问AMS,这里采用的跨进程技术是AIDL

  3. 然后AMS进程一系列的工作,如判断该activity是否存在,启动模式是什么,有没有进行注册等

  4. 通过ClientLifeCycleManager,利用本地进程在系统服务进程的IBinder接口直接访问本地ActivityThread。

  5. ApplicationThread是ActivityThread的内部类,IApplicationThread是在远程服务端的Binder接口

  6. ApplicationThread接收到服务端的事务后,把事务直接转交给ActivityThread处理

  7. ActivityThread通过Instrumentation利用类加载器进行创建实例,同时利用Instrumentation回调activity的生命中周期

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Activity启动流程详解 的相关文章

随机推荐

  • idea 工程目录横向变纵向【亲测可用】

    idea 目录横向变纵向往上搜好多都没啥用 下面亲测可用三步走 1 删除项目文件夹下的 idea文件夹 横向时点击 project 然后在 idea 下右击 Delete 就好了 2 关闭IDEA 3 重新用IDEA工具打开项目 然后就 O
  • Android如何配置init.rc中的开机启动进程(service)

    开篇 为什么写这篇文章 先说下我自己的情况 我是个普通的学生 之前在学校一直做Android应用开发 找实习的时候也一直想找相关的工作 来到现在这家公司以后 由于业务调整 被领导安排去做底层开发 本来我对底层的东西一无所知 加上其实并不感兴
  • Python 函数是传值还是传引用

    传递参数的时候 python不允许程序员选择采用传值还是传引用 Python参数传递采用的肯定是 传对象引用 的方式 实际上 这种方式相当于传值和传引用的一种综合 如果函数收到的是一个可变对象 比如字典或者列表 的引用 就能修改对象的原始值
  • C++中char和int型变量的一点心得

    字符字面值一般是用一对单引号来表示 char类型一般就是用字符字面值来初始化 赋值 由于char类型的是单字节长度 当给char类型的变量用字符 字面值赋值时 当单引号里面的内容超过一个字节时 系统会自动截取一个字节的内容给char变量 忽
  • JVM-了解概念

    1 什么是JVM JVM是 java Virtual Machine java虚拟机 的缩写 JVM是作用于计算设备的规范 它是一个虚构出来的计算机 是通过在实际计算机上仿真模拟各种计算机功能来实现的 java虚拟机包括一套字节码指令集 一
  • 苏宁 11.11:仓库内多 AGV 协作的全局路径规划算法研究

    本文为 InfoQ x 苏宁 2018双十一 技术特别策划系列文章之一 1 背景 随着物联网和人工智能的发展 越来越多的任务渐渐的被机器人取代 机器人逐渐在发展中慢慢进入物流领域 智能叉车 AGV Automated Guided Vehi
  • ROS :发送一个目标位置,机器人自动规划路线,移动到该位置。

    使用 Action move base msgs MoveBaseAction move base在world中的目标 新建send goal cpp send goal cpp Created on Aug 10 2016 Author
  • minio 配置

    文章目录 资源访问 用户和权限 策略 用户 Service Accounts java 连接 minio k8s 部署 minio 资源访问 某些资源例如图片 需要可以直接访问 新建桶 上传一张图片上去 点击桶设置 设置 Access Po
  • 灰度共生矩阵的原理及实现(特征提取)-OpenCV

    最近在研究机器学习相关内容 后面会尽量花时间整理成一个系列的博客 然后朋友让我帮他实现一种基于SVR支持向量回归的图像质量评价方法 然而在文章的开头竟然发现 灰度共生矩阵这个陌生的家伙 于是便有此文 主要参考博客1 http blog cs
  • 个人中心 - 实现修改用户头像、用户名或密码

    目录 1 修改用户头像 1 1 获取原来的用户头像和用户名 1 2 实现保存头像 2 修改用户名或密码 1 修改用户头像 本文是针对之前的一篇项目博客 博客系统 做的一个扩展功能 1 1 获取原来的用户头像和用户名 想要修改头像 那么就得先
  • MOS管过大电流时关断为什么会出现尖峰电压

    尖峰电压属于浪涌电压里的一种 持续时间极短但数值很高 电机 电容器和功率转换设备 如变速驱动器 是产生尖峰电压的主要因素 雷电击中室外的输电线路也会引起极危险的高能瞬变 它们会在低压电源电路中定期发生 峰值可能会达到数千伏 处理方法 为了防
  • Ubuntu 安装 cuDNN(附测试)

    为深度学习所用 博主预想在Ubuntu16 04上安装 显卡驱动 CUDA cuDNN Tensorflow gpu Keras PyCharm 参考了众多资料 最终成功将所有软件安装完毕 且能成功运行使用 该篇博客介绍了cuDNN的安装教
  • 相机畸变+张正友标定(含源代码)

    希望2022能够自主学习 本文狠狠的借鉴了 相机标定之张正友标定法数学原理详解 含python源码 知乎和最详细 最完整的相机标定讲解 a083614的专栏 CSDN博客 相机的标定 非常感谢 只供自我学习 不做他用 我们知道了相机是如何成
  • Collection集合的三种初始化方法

    一 java容器可以分为两大类 1 Collection其中包括List Set Queue 2 Map 二 Arrays asList 方法 接受一个数组或一个逗号分隔的元素列表 并将其转化为Lists对象 三 1 构造器方法 Colle
  • UVC摄像头-学习

    多摄像头拍摄实现 从人脸识别入手 已经实现打开双uvc摄像头 需要支持UVC 支持USB OTG接口驱动 通过OTG扩展多个USB接口 应用层调用JNI函数 可以实现实时显示 图像拍摄 视频录制等功能 UVCCamera 听名字就知道使用U
  • 入门靶机渗透之Me And My Girlfriend

    靶场介绍 靶场下载地址 点击进入下载界面 下载 ova文件 在VMware中导入该虚拟机 导入完成后开启虚拟机 这个靶场背景告诉我们有一对恋人 即 Alice 和 Bob 这对情侣原本很浪漫 但自从 Alice 在一家私人公司 Ceban
  • Arduino IDE编译烧写ESP32 CAM

    一 安装Arduino IED 到官网下载IDE 二 安装ESP32 工具 打开菜单 文件 首选项 在设置页 附加开发板管理器网址 添加 https dl espressif com dl package esp32 index json
  • 异常检测的总结性介绍

    1 异常检测 1 1 什么是异常值 在机器学习中 异常检测和处理是一个比较小的分支 或者说 是机器学习的一个副产物 因为在一般的预测问题中 模型通常是对整体样本数据结构的一种表达方式 这种表达方式通常抓住的是整体样本一般性的性质 而那些在这
  • 练习四、把数组扁平;获取页面所用标签,并去重

    功能描述 题目一 将多层嵌套数组降低层级 比如 1 2 3 0 4 5 10 200 3 扁平到 1 2 3 0 4 5 10 200 3 题目二 获取页面所用标签 比如应含有html多种标签 并且去重 主要考点 题目一 判断是否为数组的方
  • Activity启动流程详解

    普通Activity创建也就是平常我们在代码中采用startActivity Intent intent 方法来创建Activity的方式 总体流程如下图 启动过程设计到两个进程 本地进程和系统服务进程 本地进程也就是我们的应用所在进程 系