1# @ohos.resourceschedule.systemload (性能功耗热融合档位)
2
3系统根据当前温度、负载以及是否处于高负载场景等信息决策出系统负载融合档位,并在档位变化时通知已注册的应用。
4
5> **说明:**
6>
7> - 本模块首批接口从 API version 12 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```
12import { systemLoad } from '@kit.BasicServicesKit';
13```
14
15## systemLoad.on('systemLoadChange')
16
17on(type: 'systemLoadChange', callback: Callback\<SystemLoadLevel>): void
18
19注册系统负载回调,感知系统负载融合档位变化,使用callback异步回调。
20
21**系统能力:** SystemCapability.ResourceSchedule.SystemLoad
22
23**参数**:
24
25| 参数名       | 类型                          | 必填   | 说明                                       |
26| --------- | --------------------------- | ---- | ---------------------------------------- |
27| type | string                      | 是    | 固定取值'systemLoadChange',系统负载变化类型。                               |
28| callback  | AsyncCallback&lt;[SystemLoadLevel](#systemloadlevel)&gt; | 是    | 回调函数,返回本次注册系统负载时的系统负载融合档位。 |
29
30**错误码**:
31
32以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
33
34| 错误码ID  | 错误信息             |
35| ---- | --------------------- |
36| 401 | Parameter error. Possible cause: 1. Callback parameter error; 2. Register a exist callback type; 3. Parameter verification failed. |
37
38**示例**:
39
40```ts
41import { systemLoad } from '@kit.BasicServicesKit';
42
43function onSystemLoadChange(res: systemLoad.SystemLoadLevel) {
44    console.log(`system load changed, current level ` + res);
45}
46
47try {
48    systemLoad.on('systemLoadChange', onSystemLoadChange);
49    console.log(`register systemload callback succeeded. `);
50} catch (err) {
51    console.error(`register systemload callback failed: ` + JSON.stringify(err));
52}
53```
54
55## systemLoad.off('systemLoadChange')
56
57off(type: 'systemLoadChange', callback?: Callback\<SystemLoadLevel>): void
58
59取消注册系统负载回调,使用callback异步回调。
60
61**系统能力:** SystemCapability.ResourceSchedule.SystemLoad
62
63**参数**:
64
65| 参数名       | 类型                          | 必填   | 说明                                       |
66| --------- | --------------------------- | ---- | ---------------------------------------- |
67| type | string                      | 是    | 固定取值'systemLoadChange',系统负载变化类型。                               |
68| callback  | AsyncCallback&lt;[SystemLoadLevel](#systemloadlevel)&gt; | 否    | 回调函数,返回本次取消注册系统负载时的系统负载融合档位。 |
69**错误码**:
70
71以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
72
73| 错误码ID  | 错误信息             |
74| ---- | --------------------- |
75| 401 | Parameter error. Possible cause: 1. Callback parameter error; 2. Unregister type has not register; 3. Parameter verification failed. |
76
77**示例**:
78
79```ts
80import { systemLoad } from '@kit.BasicServicesKit';
81
82function onSystemLoadChange(res: systemLoad.SystemLoadLevel) {
83    console.log(`system load changed, current level ` + res);
84}
85
86try {
87    systemLoad.off('systemLoadChange', onSystemLoadChange);
88    console.log(`unregister systemload callback succeeded:. `);
89} catch (err) {
90    console.error(`unregister systemload callback failed: ` + JSON.stringify(err));
91}
92```
93
94## systemLoad.getLevel
95
96getLevel(): Promise&lt;[SystemLoadLevel](#systemloadlevel)&gt;
97
98获取系统负载融合档位,使用promise异步回调。
99
100**系统能力:** SystemCapability.ResourceSchedule.SystemLoad
101
102**返回值**:
103
104| 类型                    | 说明                                       |
105| --------------------- | ---------------------------------------- |
106| Promise&lt;[SystemLoadLevel](#systemloadlevel)&gt; | Promise对象,返回系统负载融合档位。 |
107
108**示例**:
109
110```ts
111import { BusinessError } from '@kit.BasicServicesKit';
112import { systemLoad } from '@kit.BasicServicesKit';
113
114systemLoad.getLevel().then((res: systemLoad.SystemLoadLevel) => {
115    console.log(`getLevel promise succeeded. result: ` + JSON.stringify(res));
116}).catch((err: BusinessError) => {
117    console.error(`getLevel promise failed. code is ${err.code} message is ${err.message}`);
118})
119```
120
121## SystemLoadLevel
122
123系统负载融合档位。
124
125**系统能力:** SystemCapability.ResourceSchedule.SystemLoad
126
127| 名称                     | 值  | 说明                    |
128| ----------------------- | ---- | --------------------- |
129| LOW          | 0    | 设备当前温度、负载比较低,无高负载场景。                  |
130| NORMAL       | 1    | 设备温度、负载正常,但邻近中等状态,无感知业务应降低规格和负载。                  |
131| MEDIUM       | 2    | 设备温度、负载有一项或多项稍高,或者当前处于高负载场景,无感知业务应暂停或延迟运行。                    |
132| HIGH         | 3    | 设备当前发热明显或负载比较高,或处于负载温度中等但处于高负载场景,无感知业务应停止,非关键业务应降低规格及负载。                  |
133| OVERHEATED   | 4    | 设备发热严重或者负载较重,无感知业务与非关键业务应停止,前台关键业务应降低规格及负载。                  |
134| WARNING     | 5    | 设备过热或负载过重,或者温度较高但处于高负载场景,即将进入紧急状态,整机资源供给大幅降低,停止所有非关键,前台关键业务应降低至最低规格。                 |
135| EMERGENCY    | 6    | 设备已经进入过热状态或负载极高紧急状态,或接近紧急状态但处于高负载场景,整机资源供给降至最低,设备功能受限,仅保留基础功能可用。        |
136| ESCAPE      | 7    | 设备即将进入热逃生状态或当前负载已经不堪重负,或已经处于紧急状态且高负载状态,所有业务将被强制停止,业务需做好逃生措施,例如保存重要数据等。        |
137