1# @ohos.resourceschedule.backgroundProcessManager (后台子进程管控) 2 3本模块提供了后台子进程管控接口。开发者可以通过本模块接口对子进程进行压制、解压制,避免子进程过多占用系统资源,导致系统使用卡顿。本模块接口仅对通过[OH_Ability_StartNativeChildProcess](../apis-ability-kit/c-apis-ability-childprocess.md#oh_ability_startnativechildprocess)接口创建的子进程生效。 4 5> **说明:** 6> 7> 本模块首批接口从API version 17开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8 9## 导入模块 10 11```ts 12import { backgroundProcessManager } from '@kit.BackgroundTasksKit'; 13``` 14 15## backgroundProcessManager.setProcessPriority 16 17setProcessPriority(pid: number, priority: ProcessPriority): Promise<void> 18 19设置子进程的压制档位,子进程被压制后可获得的CPU资源将会受到限制。如果主进程调度策略发生变化,如从后台切至前台等,子进程会跟随主进程一同变化,子进程如需继续压制,需要重新调用本接口。 20 21**系统能力:** SystemCapability.Resourceschedule.BackgroundProcessManager 22 23**参数**: 24 25| 参数名 | 类型 | 必填 | 说明 | 26|----------|-------------------------------------| ---- |-------------------------------------------------------------------------------------------------------------------------------| 27| pid | number | 是 | 需要被压制子进程的进程号,[OH_Ability_StartNativeChildProcess](../apis-ability-kit/c-apis-ability-childprocess.md#oh_ability_startnativechildprocess)接口创建子进程后的pid参数,即为子进程进程号。 | 28| priority | [ProcessPriority](#processpriority) | 是 | 压制档位。 | 29 30**返回值**: 31 32| 类型 | 说明 | 33| -------------- | ---------------- | 34| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 35 36**错误码**: 37 38以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 39 40| 错误码ID | 错误信息 | 41|----------|------------------| 42| 401 | Parameter error. Possible causes: priority is out of range. | 43 44**示例**: 45 46```ts 47import { BusinessError } from '@kit.BasicServicesKit'; 48import { backgroundProcessManager } from '@kit.BackgroundTasksKit'; 49 50let childProcessPid = 33333; 51try { 52 backgroundProcessManager.setProcessPriority(childProcessPid, 53 backgroundProcessManager.ProcessPriority.PROCESS_INACTIVE); 54} catch (error) { 55 console.error(`setProcessPriority failed, errCode: ${(error as BusinessError).code}, message: ${(error as BusinessError).message}`); 56} 57``` 58 59## backgroundProcessManager.resetProcessPriority 60 61resetProcessPriority(pid: number): Promise<void> 62 63为子进程解压制,即子进程策略恢复为主进程调度策略。若主进程调度策略发生变化,如从后台切至前台等, 子进程会跟随主进程一同变化,等效于执行一次resetProcessPriority动作。 64 65**系统能力:** SystemCapability.Resourceschedule.BackgroundProcessManager 66 67**参数**: 68 69| 参数名 | 类型 | 必填 | 说明 | 70|----------|--------------------| ---- |---------------------------------------------------------------------------------------------------------------------------| 71| pid | number | 是 | 子进程的进程号,[OH_Ability_StartNativeChildProcess](../apis-ability-kit/c-apis-ability-childprocess.md#oh_ability_startnativechildprocess)接口创建子进程后的pid参数,即为子进程进程号。 | 72 73**返回值**: 74 75| 类型 | 说明 | 76| -------------- | ---------------- | 77| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 78 79**示例**: 80 81```ts 82import { BusinessError } from '@kit.BasicServicesKit'; 83import { backgroundProcessManager } from '@kit.BackgroundTasksKit'; 84 85let childProcessPid = 33333; 86try { 87 backgroundProcessManager.resetProcessPriority(childProcessPid); 88} catch (error) { 89 console.error(`setProcessPriority failed, errCode: ${(error as BusinessError).code}, message: ${(error as BusinessError).message}`); 90} 91``` 92 93## ProcessPriority 94 95子进程压制档位。 96 97**系统能力:** SystemCapability.Resourceschedule.BackgroundProcessManager 98 99| 名称 | 值 | 说明 | 100|----------------------| -------- |--------------------------------------------------------------------------------| 101| PROCESS_BACKGROUND | 1 | 该档位相较PROCESS_INACTIVE压制效果更显著,获取到的CPU资源更少。推荐执行处于后台的图文页面等用户无感知业务的后台子进程时设置该档位。 | 102| PROCESS_INACTIVE | 2 | 推荐正在执行播放音频、导航等用户可感知业务的后台子进程时设置该档位。 | 103 104