美文网首页
进程fork好之后到启用应用,他们之间做了哪些通信?

进程fork好之后到启用应用,他们之间做了哪些通信?

作者: 忧零520 | 来源:发表于2024-06-24 17:56 被阅读0次

在Android中,通常Zygote fork进程之后,并不直接由Zygote通知AMS启动应用,而是通过一个更为复杂的流程。下面是详细的步骤和它们之间的通信:

  1. AMS 请求 Zygote 创建新进程

当Activity Manager Service (AMS) 决定需要为某个应用启动一个新进程时,它向Zygote发送一个请求。通信通常通过socket完成,AMS与Zygote通信使用特定的协议来传递创建新进程所需要的参数,如应用的包名、用户ID(UID)、初始类等。

  1. Zygote Fork进程

根据从AMS接收到的信息,Zygote进程执行fork操作。这是通过复制它自身的进程映像来完成的,创建出一个新的进程。新的进程继承了Zygote的文件描述符和已加载的系统类库,并会加载应用特定的类和资源。

  1. 新进程的初始化

一旦进程被创建,它会进行自我初始化。这包括创建一个新的ActivityThread实例,该实例管理应用的主要运行循环。在这个阶段,新的进程还会设置自己的应用环境,加载应用特定的数据和代码。

  1. ActivityThread与AMS的通信

新创建的进程中的ActivityThread会向AMS注册自己,通常是通过Binder IPC。在这个阶段,ActivityThread告诉AMS它已经成功启动并准备就绪。这一步是通过调用attachApplication()方法实现的,该方法由AMS在新进程的主线程上调用。

  1. AMS 调度Activity启动

完成进程的注册后,AMS控制新的Activity启动,它将调用新进程中的ActivityThread的handleLaunchActivity()来开始Activity的启动流程。这通常涉及到调用Activity的onCreate(), onStart(), 和onResume()等生命周期方法。

  1. Activity 运行

一旦ActivityThread完成Activity的创建和初始化,Activity就处于运行状态,用户可以与之交互了。
在整个过程中,AMS、Zygote和新创建的进程之间的通信主要通过以下方式进行:

Socket通信:用于AMS与Zygote之间的交流,包括发送创建新进程的请求。

Binder IPC:用于新的应用进程与AMS之间的交流,包括状态更新、进程注册、启动Activity等

相关文章

  • Android通信v2.0

    跨网络通信 Socket本地通信,进程从zygote进程fork的指令都是用socket本地通信的 跨应用/进程通...

  • LInux进程之间的通信-有名管道(FIFO)

    Linux进程间的通信-有名管道FIFO 管道的通信只能存在于具有亲缘关系的进程之间,比如fork出来的子进程与父...

  • Python 多进程

    一、多进程 fork multiprocessing Pool 进程间通信

  • 进程api与控制

    进程创建 进程创建示例代码: 代码示例 用父进程创建N个子进程: 进程共享 父子进程之间在fork后。有哪些相同,...

  • 应用层协议之DNS、DHCP

    运输层为应用进程提供了端对端的通信服务,但不同的网络应用的应用进程之间,还需要有不同的通信规则。因此在运输层协议之...

  • 计算机网络自学笔记:TCP

    传输层协议为运行在不同主机上的应用进程之间提供逻辑通信功能。从应用程序的角度看,通过逻辑通信,运行不同进程的主机好...

  • 快速上手微前端框架 icestark (二)

    思考 微前端中都需要哪些通信 主应用与子应用通信 子应用之间的通信 主应用与子应用通信 主应用传参到子应用 sto...

  • TCP和UDP协议

    1 运输层协议概述 1.1 进程之间的通信 网络层是为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑...

  • 第二章 进程的描述与控制5

    2.6 进程通信 1、进程通信是指进程之间的信息交换。 2、进程通信分为: 1)低级通信——进程之间的互斥和同步 ...

  • 进程间通信(应用之间通信)

    进程间通信(IPC)方式 使用Bundle 使用文件共享 使用Messenger 使用AIDL 使用COntent...

网友评论

      本文标题:进程fork好之后到启用应用,他们之间做了哪些通信?

      本文链接:https://www.haomeiwen.com/subject/plrdcjtx.html