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