Android进程启动流程

Android Framework学习——安卓进程启动流程(Android 13) 进程是作为应用程序容器存在的,每个应用启动前需要先创建一个进程,进程是由Zygote进程孵化来的,它拥有独立的资源空间,用来运行四大组件,大部分应用运行在一个进程上,部分应用如微信、支付宝等运行在多个进程上,比如微信小程序就是一个子进程。未完待续。 阅读详情

理解Android进程创建流程
理解Android进程启动之全过程

站在GITYUAN大神的肩膀上学习,用一张神图表示进程基本的启动流程.

93730-5121eb1d162d109e.png
上图还需对照源码进行查看,简述一下启动流程


在Android系统全貌描述到了Zygote孵化了第一个进程是system_server进程,而且孵化第一个App进程是Launcher,也就是桌面App。


当点击桌面App的时候,发起进程就是Launcher所在的进程,启动远程进程,利用Binder发送消息给system_server进程;


在system_server进程中启动了N多服务,例如ActiivityManagerService,WindowManagerService等。启动进程的操作会先调用AMS.startProcessLocked方法,内部调用 Process.start(android.app.ActivityThread);而后通过socket通信告知Zygote进程fork子进程,即app进程。进程创建后将ActivityThread加载进去,执行ActivityThread.main()方法。


在app进程中,main方法会实例化ActivityThread,同时创建ApplicationThread,Looper,Hander对象,调用attach方法进行Binder通信,looper启动循环。attach方法内部获取ActivityManagerProxy对象,其实现了IActivityManager接口,作为客户端调用attachApplication(mAppThread)方法,将thread信息告知AMS。


在system_server进程中,AMS中会调用ActivityManagerNative.onTransact方法,真正的逻辑在服务端AMS.attachApplication方法中,内部调用AMS.attachApplicationLocked方法,方法的参数是IApplicationThread,在此处是ApplicationThreadProxy对象,用于跟前面通过Process.start()所创建的进程中ApplicationThread对象进行通信。
attachApplicationLocked方法会处理Provider, Activity, Service, Broadcast相应流程,调用ApplicationThreadProxy.bindApplication方法,通过Binder通信,传递给ApplicationThreadNative.onTransact方法。

在app进程中,真正的逻辑在ActivityThread.bindApplication方法中。bindApplication方法的主要功能是依次向主线程发送消息H.SET_CORE_SETTINGS
和H.BIND_APPLICATION
。后续创建Application,Context等。Activity的回调也会是通过Binder通信,然后发送不同消息处理。
. 

Android 系统init进程启动流程 和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:一、启动流程概述二、Android启动分析三、init 进程启动分析四、init 启动脚本分析五、init 进程分析六、init 脚本执行七、init 进程守护八、init rc 脚本启动Zygote九、启动分析小结一、 启动流程概述Android启动流程跟Linux启动类似,大致分为如下五个阶段。1.开... 阅读详情

相关推荐

【Android】系统启动流程分析 —— init 进程启动过程

本文基于 Android 14.0.0_r2 的系统启动流程分析。

Creativity + Efficiency = Success 1492

android java进程管理(三)之apk进程的启动

声明:一个apk进程包括两种资源,一种是进程本身运行实体,另一种就是系统管理进程的进程记录表(ProcessRecord),进程的启动和回收就是申请和释放以上两种资源,对第一种资源的申请过程我们定义为launch进程,对第二种资源的申请过程我们定义为new进程记录表,进程记录表(ProcessRecord)是系统对apk进程的详细描述记录,基于复用原则,进程记录表的生命周期是大于等于进程实体的生命周期的,理解这一点很

tonyandroid1984的博客 1万+

android zygote进程启动流程

Init进程启动后,最重要的一个进程就是Zygote进程,SystemServer和其他所有Dalivik虚拟机进程都是由Zygote fork而来。Zygote进程由app_process启动,Zygote是一个C/S模型,Zygote进程作为服务端,其他进程作为客户端向它发出“孵化-fork”请求,而Zygote接收到这个请求后就“孵化-fork”出一个新的进程。

allen_xu_2012_new的博客 1993

Android应用程序进程启动流程

有一点需要注意:本文讲的是应用程序进程的启动流程不是应用程序启动流程,应用程序启动流程(根activity启动流程)后面会有专门文章讲解。

qq_36428821的博客 1663

使用sysbench对Oracle做基准测试(-) 安装篇

sysbench是一款开源的多线程性能测试工具, 可以执行CPU/内存/线程/IO/数据库等方面的性能测试。数据库目前支持MySQL/Oracle/PostgreSQL。

道行尚浅(老道)的博客 7811

【Fluent】太阳辐射模型—Solar Ray Tracing

一、引言Fluent提供了一个太阳能负载模型,可用于计算进入计算域的太阳光线的辐射效应。该模型可以分为:太阳光线追踪和太阳辐照。其中太阳辐照需要使用DO或MC模型,直接向辐射模型提供外光束方向和强度参数。太阳光线追踪不限制辐射模型,可以独立于辐射方程使用,甚至可以在辐射模型off的情况下使用。本文主要介绍太阳光线追踪模型。该模型非常适用于以下领域汽车气候控制 (ACC) 应用建筑物中的人体热舒适建模应用该模型使用着色算法进行太阳光线追踪。光线会透过半透明的面加载在照射面上。

a5567899的博客 7589

Android启动流程

main方法中创建ZygoteServer。

joedan0104的专栏 2723

QGIS中高效处理CAD数据的两种实用技巧

本文详细解析了在QGIS中高效处理CAD数据的两种核心方法。针对DWG/DXF文件在QGIS中直接打开失败的问题,介绍了使用QGIS内置数据导入管理器进行标准化转换的流程,并重点推荐了功能更强大的Another DXF Importer插件,以更好地保留文字、块属性等复杂信息。文章对比了两种方法的优劣与适用场景,并提供了坐标系设置、中文乱码等常见问题的避坑指南,帮助用户根据数据需求选择最佳导入策略。

weixin_28363123的博客 117

Android启动之应用进程创建和启动

AMS发送创建应用程序进程的请求到ZygoteZygote接收创建应用程序进程的请求,fork出新的进程并启动当然在这个过程中有很多细节,最重要就是Binder线程池和消息循环的创建和启动。如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。

Androiddddd的博客 1598

Win10/Win11系统下,用VSCode编译Betaflight固件最全避坑指南(从GCC安装到HEX生成)

本文详细介绍了在Win10/Win11系统下使用VSCode编译Betaflight固件的完整流程,包括GCC安装、环境变量配置、终端选择、Make工具安装等关键步骤,帮助开发者避开常见陷阱,高效生成HEX文件。特别针对VSCode环境优化和编译错误排查提供了实用解决方案。

weixin_42557803的博客 415

新手小白入门编程第2讲 JAVA编程环境搭建 JDK与环境变量、Eclipse

1 JDK 1.1 JDK概述 JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。 JDK是整个java开发的核心,它包含了: JAVA开发工具(jdk\bin) 基础开发库(jdk\jre\lib\rt.jar) 基础开发库的源码(jdk\src.zip) 1.2 JDK下载与安装 本次使用的是JDK1.8,详细安装步骤可以参见”JDK培优安装手册”. 注意事项: 同时安装多个JDK时需要使用执行环境变量来确认使用的是哪个jdk 安装时选择默认选项安装到默认

程序媛泡泡的博客 4万+

【Android面试八股文】Android应用进程的启动流程

init进程fork出Zygote进程后,Zygote进程会创建一个服务端socket,等待AMS发起socket请求。同时,由Zygote进程fork出的SystemServer进程会启动各项系统服务,其中就包含了AMS,AMS会启动Launcher桌面,此时就可以等待用户点击App图标来启动应用进程了。然后看下系统服务的启动,不管是由init进程启动的独立进程的系统服务如SurfaceFlinger,还是由SystemServer进程启动的非独立进程的系统服务如AMS,都是在ServiceManager

字节卷动 649

Windows 11/10系统盘被BitLocker锁了别慌!手把手教你用manage-bde命令找回密钥并解锁

本文详细介绍了当Windows 11/10系统盘被BitLocker锁定后的恢复方法,重点讲解了如何使用manage-bde命令行工具找回密钥并解锁加密驱动器。通过进入Windows恢复环境、诊断锁定状态、提取恢复密钥ID以及执行解锁操作等步骤,帮助用户有效解决BitLocker锁定问题,同时提供了后续防护优化建议和高级故障排除技巧。

weixin_42542669的博客 1463

【Android】【Android启动流程之init进程】

待补充 面试问题回答内容。

super_sun_shine的博客 2025

educoder中Hive综合应用案例 — 用户搜索日志分析

Hive综合应用案例 — 用户搜索日志分析

weixin_46026136的博客 4789

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

安卓系统启动流程: Zygote进程 –> SystemServer进程

一. 安卓启动流程 1)安卓系统启动层次结构 Android系统启动的流程图,可以看到系统从启动开始是按照一个流程:Loader->kernel->framework->Application来进行的。 1. Loader层 Boot Rom:当手机处于关机状态时,长按开机键开机,会引导芯片开始从固化在Rom里预设的代码开始执行,然后加载引导程序到Ram Boot Loader:启动Android系统之前的引导程序,主要是检查Ram,初始化参数等 2. Kernerl

mike_jun的博客 1629

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

安卓app_process启动进程的底层流程

可是个好东西,由它启的进程虽然也是运行在手机上,但却是独立运行在linux上的,不受android的管控,所以我们可以利用做很多事情。

Encode_myself的专栏 1418

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【Android】系统启动流程分析 —— Zygote 进程启动过程

本文基于 Android 14.0.0_r2 的系统启动流程分析。

Creativity + Efficiency = Success 4653

Android中Service在新进程中的启动流程

App中的Service与AMS的交互框架如下:首先是我们的App进程,假定MyService服务运行于服务进程(还没有启动,我们暂称为Service进程吧,从APP进程中调用startService启动)中 ,我们调用startService启动服务后,AMS会通过binder驱动回调到我们的Service进程,调用Service里面的生命周期函数。

1224

Android N Phone进程启动流程

本流程图基于MTK平台 Android 7.0,本流程只作为沟通学习使用整体流程图部分关键点说明persistent属性以下来自官网介绍:https://developer.android.com/guide/topics/manifest/application-element.htmlandroid:persistent Whether or not the application should

Yigit_dev的博客 1666

Android进程的启动流程

Android进程的启动流程

gs344937933的专栏 481

Android系统启动流程—— init进程zygote进程SystemServer进程启动流程

原文地址:https://blog.youkuaiyun.com/qq_30993595/article/details/82714409 Android系统启动流程 Android系统启动过程往细了说可以分为5步: Loader --》Kernel --》Native --》Framework --》Application Loader Boot ROM: 当手机处于关机状态时,长按Power键...

Dream It Possible 5068

Android13 启动流程一,深入探索Init进程的启动奥秘上

在Android系统启动过程中,init进程作为第一个用户空间进程(PID=1) ,承担着初始化系统环境、解析关键配置、启动核心服务等核心职责。\android13-r44\system\core\init\README.md ,里面介绍的还是很详细的。中定义的命令会被添加到“命令执行队列”的尾部(如果命令已经存在,则不会重复添加)。四种声明类型,实现了系统的硬件初始化、服务启动、命令执行等关键功能。文件的语法和功能,对于 Android 系统的开发和调试具有重要意义。启动指定的服务(如果尚未运行)。

qq_33846156的博客 2096

Android开机流程-从Init进程启动到进入Android桌面

Android系统用户空间启动流程详解

techfuture的博客 3188

【Android】【Android启动流程之zygote进程】

1、说一下什么是zygote进程,和他的启动流程? 2、为什么用zygote创建进程,而不是systemserver创建? 3、AMS与zygote为什么不用binder通信?1、zygote进程是init进程解析加载init.zygote32.rc或init.zygote64.rc文件启动的,这里以init.zygote64.rc为例,进行解析。 2、zygote进程的入口函数。 /frameworks/base/cmds/app_process/app_main.cpp。这里主要是解析init.zyg

super_sun_shine的博客 580
上一篇: Android中窗口的创建过程
下一篇: 2017,搞事情
青菜小王子
博客等级 码龄11年 1695粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青菜小王子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值