Android AMS——APP启动流程(三)

         Android 应用启动方式主要有两种 , 冷启动和热启动。

  • 冷启动:后台没有应用进程 , 需要先创建进程 , 然后启动 Activity ;
  • 热启动:后台有应用进程 , 不创建进程 , 直接启动 Activity ;

        其实,还有一种温起动的方式,就是用户按了返回键退出应用,随后又从新启动,可是活动的进程是有驻留在后台的。这里为了分析完整的启动流程,我们主要分析冷启动流程。

一、启动流程

        Zygote 进程在 App 层中孵化出的第一个进程是 Launcher 进程,即手机的桌面APP。Zygote还会孵化出 Browser、Email、Phone 等 AP P进程,每个 APP 至少运行在一个进程上。所有 APP 进程都由 Zygote 进程 fork 生成。

1、启动APP进程

        点击 Launcher 桌面程序的 APP 图标,Launcher 程序会调用 startActivity() 函数,通过 Binder 跨进程通信,发送消息给 system_server 进程。在 system_server 进程中,由 AMS 通过 socket 通信告知 Zygote 进程 fork 出一个子进程(APP进程)。

2、开启APP主线程

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

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

相关文章

C理解(四):链表

本文主要探讨单链表与双链表相关知识。 linux内核链表(include/linux/list.h) 内核链表中纯链表封装,纯链表的各种操作函数(节点创建、插入、删除、遍历),纯链表内嵌在驱动结构体中,实现驱动的创建、插入、删除、遍历等 单链表 单链表链表头插…

【每日一题】2769. 找出最大的可达成数字

2769. 找出最大的可达成数字 - 力扣(LeetCode) 给你两个整数 num 和 t 。 如果整数 x 可以在执行下述操作不超过 t 次的情况下变为与 num 相等,则称其为 可达成数字 : 每次操作将 x 的值增加或减少 1 ,同时可以选择将 …

JMM与JUC

1.JMM 问题1:请你谈谈你对Volatile的理解 Volatile 是java虚拟机提供轻量级的同步机制 1. 保证可见性 2. 不保证原子性 3. 禁止指令重排 1.1、什么是JMM JMM Java内存模型 不存在的东西,概念!约定 ! 1.2、关于JMM的一些同…

GD32工程创建

1.创建空工程 在任意路径下创建空的test文件夹。打开keil5空工程创建空工程 选择对应的芯片型号: 然后把空工程保存到test文件夹下。会自动生成如下文件。 2. 添加组 下载GD32F10X的固件库:在百度里搜索GD32进入官网。 下载下来对应的文件如下&#xff…

Word | 简单可操作的快捷公式编号、右对齐和引用方法

1. 问题描述 在理工科论文的写作中,涉及到大量的公式输入,我们希望能够按照章节为公式进行编号,并且实现公式居中,编号右对齐的效果。网上有各种各样的方法来实现,操作繁琐和简单的混在一起,让没有接触过公…

Linux性能优化--性能工具-系统CPU

2.0.概述 本章概述了系统级的Linux性能工具。这些工具是你追踪性能问题时的第一道防线。 它们能展示整个系统的性能情况和哪些部分表现不好。 1.理解系统级性能的基本指标,包括CPU的使用情况。 2.明白哪些工具可以检索这些系统级性能指标。2.1CPU性能统计信息 为了…

LeetCode 接雨水 双指针

原题链接: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题面: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入&#xff1a…

Java编程技巧:文件上传、下载、预览

目录 1、上传文件1.1、代码1.2、postman测试截图 2、下载resources目录中的模板文件2.1、项目结构2.2、代码2.3、使用场景 3、预览文件3.1、项目结构3.2、代码3.3、使用场景 1、上传文件 1.1、代码 PostMapping("/uploadFile") public String uploadFile(Multipart…

WebPack-打包工具

从图中我们可以看出,Webpack 可以将多种静态资源 js、css、less 转换成一个静态文件,减少了页面的请求. 下面举个例子 : main.js 我们只命名导出一个变量 export const name"老六"index.js import { name } from "./tset/…

什么是Promise链(Promise chaining)?它在异步编程中的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是 Promise 链?⭐ 异步编程中的作用⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、…

【PDF】pdf 学习之路

PDF 文件格式解析 https://www.cnblogs.com/theyangfan/p/17074647.html 权威的文档: 推荐第一个连接: PDF Explained (译作《PDF 解析》) | PDF-Explained《PDF 解析》https://zxyle.github.io/PDF-Explained/ https://zxyle…

VBA技术资料MF61:按每行指定字符数自动换行

【分享成果,随喜正能量】人生的旅途,一时的失意,一时的挫折,跌了一跤,不是人生的全部,只是人生的一个逗点,未来的成就、光辉,还有很多的虚线有待你继续去完成。。 我给VBA的定义&am…