1# BackgroundProcessManager 2 3 4## 概述 5 6提供后台子进程调度策略管控C接口。 7 8**起始版本:** 17 9 10 11## 汇总 12 13 14### 文件 15 16| 名称 | 描述 | 17| -------- | -------- | 18| [background_process_manager.h](background__process__manager_8h.md) | 本模块提供了后台子进程管控接口。开发者可以通过本模块接口对子进程进行压制、解压制,避免子进程过多占用系统资源,导致系统使用卡顿。 本模块接口仅对通过[OH_Ability_StartNativeChildProcess](../apis-ability-kit/c-apis-ability-childprocess.md#oh_ability_startnativechildprocess)接口创建的子进程生效。 | 19 20 21### 类型定义 22 23| 名称 | 描述 | 24| -------- | -------- | 25| typedef enum [BackgroundProcessManager_ProcessPriority](#backgroundprocessmanager_processpriority) [BackgroundProcessManager_ProcessPriority](#backgroundprocessmanager_processpriority) | 子进程压制档位。 | 26| typedef enum [BackgroundProcessManager_ErrorCode](#backgroundprocessmanager_errorcode) [BackgroundProcessManager_ErrorCode](#backgroundprocessmanager_errorcode) | 定义后台子进程管控错误码。 | 27 28 29### 枚举 30 31| 名称 | 描述 | 32| -------- | -------- | 33| [BackgroundProcessManager_ProcessPriority](#backgroundprocessmanager_processpriority) { PROCESS_BACKGROUND = 1, PROCESS_INACTIVE = 2 } | 子进程压制档位。 | 34| [BackgroundProcessManager_ErrorCode](#backgroundprocessmanager_errorcode) { ERR_BACKGROUND_PROCESS_MANAGER_SUCCESS = 0, ERR_BACKGROUND_PROCESS_MANAGER_INVALID_PARAM = 401, ERR_BACKGROUND_PROCESS_MANAGER_REMOTE_ERROR = 31800001 } | 定义后台子进程管控错误码。 | 35 36 37### 函数 38 39| 名称 | 描述 | 40| -------- | -------- | 41| int [OH_BackgroundProcessManager_SetProcessPriority](#oh_backgroundprocessmanager_setprocesspriority) (int pid, [BackgroundProcessManager_ProcessPriority](#backgroundprocessmanager_processpriority) priority) | 设置子进程的压制档位,子进程被压制后可获得的CPU资源将会受到限制。如果主进程调度策略发生变化,如从后台切至前台等,子进程会跟随主进程一同变化,子进程如需继续压制,需要重新调用本接口。 | 42| int [OH_BackgroundProcessManager_ResetProcessPriority](#oh_backgroundprocessmanager_resetprocesspriority) (int pid) | 为子进程解压制,即子进程策略恢复为主进程调度策略。若主进程调度策略发生变化,如从后台切至前台等,子进程会跟随主进程一同变化,等效于执行一次resetProcessPriority动作。 | 43 44 45## 类型定义说明 46 47 48### BackgroundProcessManager_ErrorCode 49 50``` 51typedef enum BackgroundProcessManager_ErrorCodeBackgroundProcessManager_ErrorCode 52``` 53**描述** 54 55定义后台子进程管控错误码。 56 57**起始版本:** 17 58 59 60### BackgroundProcessManager_ProcessPriority 61 62``` 63typedef enum BackgroundProcessManager_ProcessPriorityBackgroundProcessManager_ProcessPriority 64``` 65**描述** 66 67子进程压制档位。 68 69**起始版本:** 17 70 71 72## 枚举类型说明 73 74 75### BackgroundProcessManager_ErrorCode 76 77``` 78enum BackgroundProcessManager_ErrorCode 79``` 80**描述** 81 82定义后台子进程管控错误码。 83 84**起始版本:** 17 85 86| 枚举值 | 描述 | 87| -------- | -------- | 88| ERR_BACKGROUND_PROCESS_MANAGER_SUCCESS | 压制参数发送成功。 | 89| ERR_BACKGROUND_PROCESS_MANAGER_INVALID_PARAM | 参数检查失败。 | 90| ERR_BACKGROUND_PROCESS_MANAGER_REMOTE_ERROR | 客户端进程请求系统服务进程,获取系统服务操作失败。 | 91 92 93### BackgroundProcessManager_ProcessPriority 94 95``` 96enum BackgroundProcessManager_ProcessPriority 97``` 98**描述** 99 100子进程压制档位。 101 102**起始版本:** 17 103 104| 枚举值 | 描述 | 105| -------- | -------- | 106| PROCESS_BACKGROUND | 该档位相较PROCESS_INACTIVE压制效果更显著,获取到的CPU资源更少。推荐执行处于后台的图文页面等用户无感知业务的后台子进程时设置该档位。 | 107| PROCESS_INACTIVE | 推荐正在执行播放音频、导航等用户可感知业务的后台子进程时设置该档位。 | 108 109 110## 函数说明 111 112 113### OH_BackgroundProcessManager_ResetProcessPriority() 114 115``` 116int OH_BackgroundProcessManager_ResetProcessPriority (int pid) 117``` 118**描述** 119 120为子进程解压制,即子进程策略恢复为主进程调度策略。若主进程调度策略发生变化,如从后台切至前台等, 子进程会跟随主进程一同变化,等效于执行一次resetProcessPriority动作。 121 122**起始版本:** 17 123 124**参数:** 125 126| 名称 | 描述 | 127| -------- | -------- | 128| pid | 子进程的进程号,[OH_Ability_StartNativeChildProcess](../apis-ability-kit/c-apis-ability-childprocess.md#oh_ability_startnativechildprocess)接口创建子进程后的pid参数,即为子进程进程号。 | 129 130**返回:** 131 132返回执行的错误码。错误码定义详见[BackgroundProcessManager_ErrorCode](#backgroundprocessmanager_errorcode)。返回 ERR_BACKGROUND_PROCESS_MANAGER_SUCCESS,表示压制参数发送成功。 返回 ERR_BACKGROUND_PROCESS_MANAGER_REMOTE_ERROR,表示客户端进程请求系统服务进程,获取系统服务操作失败。 133 134 135### OH_BackgroundProcessManager_SetProcessPriority() 136 137``` 138int OH_BackgroundProcessManager_SetProcessPriority (int pid, BackgroundProcessManager_ProcessPriority priority ) 139``` 140**描述** 141 142设置子进程的压制档位,子进程被压制后可获得的CPU资源将会受到限制。如果主进程调度策略发生变化,如从后台切至前台等,子进程会跟随主进程一同变化,子进程如需继续压制,需要重新调用本接口。 143 144**起始版本:** 17 145 146**参数:** 147 148| 名称 | 描述 | 149| -------- | -------- | 150| pid | 需要被压制子进程的进程号,[OH_Ability_StartNativeChildProcess](../apis-ability-kit/c-apis-ability-childprocess.md#oh_ability_startnativechildprocess)接口创建子进程后的pid参数,即为子进程进程号。 | 151| priority | 压制档位。 | 152 153**返回:** 154 155返回执行的错误码。错误码定义详见[BackgroundProcessManager_ErrorCode](#backgroundprocessmanager_errorcode)。返回 ERR_BACKGROUND_PROCESS_MANAGER_SUCCESS,表示压制参数发送成功。 返回 ERR_BACKGROUND_PROCESS_MANAGER_INVALID_PARAM,表示参数检查失败。 返回 ERR_BACKGROUND_PROCESS_MANAGER_REMOTE_ERROR,表示客户端进程请求系统服务进程,获取系统服务操作失败。 156