目录
一、进程与线程:基础概念
在深入探索 HarmonyOS 的进程与线程之前,让我们先回顾一下它们的基本概念。进程可以被看作是正在运行的程序的实例,是操作系统进行资源分配的基本单位。当你打开一个 HarmonyOS 应用,系统就会为其创建一个对应的进程,并分配内存、文件描述符等资源 。每个进程都有自己独立的地址空间,这意味着不同进程之间的内存是相互隔离的,一个进程无法直接访问另一个进程的内存,从而保证了系统的稳定性和安全性。例如,当你同时打开音乐播放器和浏览器,它们分别运行在各自的进程中,互不干扰。即使音乐播放器进程出现异常崩溃,也不会影响浏览器的正常运行。
而线程则是进程中的一个执行单元,是操作系统能够进行运算调度的最小单位。一个进程可以包含多个线程,这些线程共享进程的资源,如内存空间、文件描述符等,但每个线程有自己独立的栈空间和程序计数器,用于存储局部变量和记录线程的执行位置。以浏览器进程为例,它可能包含负责页面渲染的线程、处理用户输入事件的线程以及进行网络请求的线程等。这些线程协同工作,使得浏览器能够同时处理多个任务,提供流畅的用户体验。
在 HarmonyOS 系统中,进程与线程扮演着至关重要的角色。它们是系统实现多任务处理、并发执行的基础,直接影响着应用的性能和用户体验。合理地管理和使用进程与线程,可以充分利用系统资源,提高应用的响应速度和执行效率,为用户带来更加流畅和高效的操作体验。
二、HarmonyOS 进程探秘
2.1 进程类型解析
在 HarmonyOS 中,一个应用通常会涉及以下几类进程 :
-
主进程:它是应用运行的核心进程,承载着应用的主要业务逻辑和用户界面展示。应用中的所有 UIAbility(即应用的界面部分)以及一些默认的扩展能力组件,如 ServiceExtensionAbility 和 DataShareExtensionAbility,都运行在主进程中。以一个社交类应用为例,用户在使用过程中看到的聊天界面、好友列表界面等,都是在主进程中进行渲染和交互处理的。主进程就像是应用的 “大脑”,协调着各个功能模块的运行,对用户的操作做出及时响应。
-
ExtensionAbility 进程:这是为了满足特定场景扩展需求而设立的进程。同一种类型的 ExtensionAbility 会被放置在同一个进程里,例如,多个 FormExtensionAbility 会在同一个进程中运行。这些扩展能力组件可以为应用提供多样化的功能扩展,如服务卡片、输入法等功能。以服务卡片为例,它可以在设备的负一屏等位置展示应用的关键信息或快捷操作入口,而承载这些服务卡片逻辑的 ExtensionAbility 就运行在对应的 ExtensionAbility 进程中,与主进程相互配合,为用户提供更加便捷和丰富的使用体验 。
-
WebView 渲染进程:专门用于网页容器渲染。当应用中需要加载网页内容时,WebView 渲染进程就会发挥作用。它拥有独立的进程空间,这使得网页的渲染过程与应用的其他部分隔离开来,大大提高了安全性和稳定性。比如,当应用内嵌了一个网页版的新闻详情页面,WebView 渲染进程会负责解析和渲染该网页,即使网页中存在一些潜在的恶意代码或不稳定因素,也不会轻易影响到应用的主进程,从而保障了应用的正常运行和用户数据的安全 。这种设计有效地提升了鸿蒙系统中 arkWeb 的网页容器渲染能力,为用户带来更流畅、更安全的网页浏览体验。
2.2 进程创建规则
对于三方应用而言,创建进程的方式主要是通过创建 XXExtensionAbility 来实现。例如,开发者可以根据业务需求创建自定义的 ExtensionAbility,并为其指定运行的进程,以此来增加应用内的进程数量,实现功能的模块化和并行处理。然而,需要注意的是,WebView 渲染进程和主进程是不能随意创建增加的。主进程作为应用的核心运行环境,其创建和管理由系统严格控制,以确保应用的稳定性和兼容性;WebView 渲染进程则是为了保证网页渲染的安全性和独立性,同样不允许三方应用随意创建,而是由系统在需要加载网页时自动创建和管理。这种进程创建规则有助于维持系统的稳定运行,避免因进程的无序创建而导致资源浪费和系统性能下降。
2.3 跨进程通信方式
在 HarmonyOS 中,为了实现不同进程之间的信息交互和协同工作,提供了以下几种跨进程通信方式 :
-
公共事件:公共事件是一种广泛应用的跨进程通信机制,它主要用于监听系统事件以及实现应用之间或应用内不同进程之间的事件通知。公共事件可以分为系统公共事件和自定义事件。系统公共事件是由系统内部定义和触发的,例如应用包安装完成、设备屏幕点亮或熄灭、设备关机等事件。这些系统公共事件为应用提供了与系统状态进行交互的机会,应用可以通过订阅这些事件来做出相应的响应。例如&#x