鸿蒙开发——进程模型与进程通信

1、进程模型

❓ 什么是进程?

进程是一个正在执行的程序的实例。当我们启动一个程序时,操作系统会创建一个进程,分配给它所需的资源,如内存和CPU时间。每个进程至少有一个线程,即执行线程,负责执行程序的指令。进程是操作系统进行资源分配和调度的基本单位,是操作系统提供给用户和应用程序的一个抽象概念。

在鸿蒙的进程模型中,进程被分为三类:主进程(负责UI的进程)、扩展进程(负责大部分ExtensionAbility)、WebView渲染进程(负责网页渲染的独立进程)。

  • 主进程

应用中(同一Bundle名称)的所有UIAbility、ServiceExtensionAbility和DataShareExtensionAbility均是运行在同一个独立进程(主进程)中,如下图中绿色部分的“Main Process”。

仅系统应用支持构建ServiceExtensionAbility和DataShareExtensionAbility
  • 扩展进程(可能有多个)

应用中(同一Bundle名称)的所有同一类型ExtensionAbility(除ServiceExtensionAbility、DataShareExtensionAbility外)均是运行在一个独立进程中,如下图中蓝色部分的“FormExtensionAbility Process”、“InputMethodExtensionAbility Process”、其他ExtensionAbility Process。

  • WebView进程

WebView拥有独立的渲染进程,如下图中黄色部分的“Render Process”。

图片

2、进程间通信方式

在鸿蒙开发中,需要跨进程通信的原因,是因为每个进程都有自己独立的资源和内存空间,其他进程不能随意访问不同进程的内存和资源。

进程间通信一般有两种方式:1)IPC/RPC;2)公共事件机制。

  • IPC/RPC

IPC(Inter-Process Communication): 使用Binder驱动,用于设备内的跨进程通信。

RPC(Remote Procedure Call):使用软总线驱动,用于跨设备跨进程通信。

由于篇幅原因,IPC和RPC在未来的文章中展开介绍
  • 公共事件机制

公共事件机制多用于一对多的通信场景(公共事件发布者可能存在多个订阅者同时接收事件)

基于鸿蒙的进程模型,针对应用间和应用内存在多个进程的情况,推荐使用公共事件机制来实现进程间通信。

3、公共事件机制

CES(Common Event Service,公共事件服务)为应用程序提供订阅、发布、退订公共事件的能力。

公共事件从系统角度可分为:系统公共事件和自定义公共事件。

  • 系统公共事件:CES内部定义的公共事件,当前仅支持系统应用和系统服务发布,例如HAP安装、更新、卸载等公共事件(系统公共事件参考官方文档定义:https://develope

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值