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