1e41f4b71Sopenharmony_ci# @ohos.runningLock (Runninglock锁)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci该模块主要提供RunningLock锁相关操作的接口,包括创建、查询、持锁、释放锁等操作。
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci> **说明:**
6e41f4b71Sopenharmony_ci>
7e41f4b71Sopenharmony_ci> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci## 导入模块
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci```js
12e41f4b71Sopenharmony_ciimport {runningLock} from '@kit.BasicServicesKit';
13e41f4b71Sopenharmony_ci```
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci## runningLock.isSupported<sup>9+</sup>
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ciisSupported(type: RunningLockType): boolean;
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci查询系统是否支持该类型的锁。
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.PowerManager.PowerManager.Core
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci**参数:**
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci| 参数名 | 类型                                | 必填 | 说明                 |
26e41f4b71Sopenharmony_ci| ------ | ----------------------------------- | ---- | -------------------- |
27e41f4b71Sopenharmony_ci| type   | [RunningLockType](#runninglocktype) | 是   | 需要查询的锁的类型;该参数必须是一个枚举类。 |
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci**返回值:**
30e41f4b71Sopenharmony_ci
31e41f4b71Sopenharmony_ci| 类型    | 说明                                    |
32e41f4b71Sopenharmony_ci| ------- | --------------------------------------- |
33e41f4b71Sopenharmony_ci| boolean | 返回true表示支持,返回false表示不支持。 |
34e41f4b71Sopenharmony_ci
35e41f4b71Sopenharmony_ci**错误码:**
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[RunningLock锁错误码](errorcode-runninglock.md)。
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci| 错误码ID   | 错误信息    |
40e41f4b71Sopenharmony_ci|---------|---------|
41e41f4b71Sopenharmony_ci| 4900101 | Failed to connect to the service. |
42e41f4b71Sopenharmony_ci| 401     | Parameter error. Possible causes: 1.Incorrect parameter types; 2.Parameter verification failed. |
43e41f4b71Sopenharmony_ci
44e41f4b71Sopenharmony_ci**示例:**
45e41f4b71Sopenharmony_ci
46e41f4b71Sopenharmony_ci```js
47e41f4b71Sopenharmony_citry {
48e41f4b71Sopenharmony_ci    let isSupported = runningLock.isSupported(runningLock.RunningLockType.PROXIMITY_SCREEN_CONTROL);
49e41f4b71Sopenharmony_ci    console.info('BACKGROUND type supported: ' + isSupported);
50e41f4b71Sopenharmony_ci} catch(err) {
51e41f4b71Sopenharmony_ci    console.error('check supported failed, err: ' + err);
52e41f4b71Sopenharmony_ci}
53e41f4b71Sopenharmony_ci```
54e41f4b71Sopenharmony_ci
55e41f4b71Sopenharmony_ci## runningLock.create<sup>9+</sup>
56e41f4b71Sopenharmony_ci
57e41f4b71Sopenharmony_cicreate(name: string, type: RunningLockType, callback: AsyncCallback&lt;RunningLock&gt;): void
58e41f4b71Sopenharmony_ci
59e41f4b71Sopenharmony_ci创建RunningLock锁。
60e41f4b71Sopenharmony_ci
61e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.PowerManager.PowerManager.Core
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.RUNNING_LOCK
64e41f4b71Sopenharmony_ci
65e41f4b71Sopenharmony_ci**参数:**
66e41f4b71Sopenharmony_ci
67e41f4b71Sopenharmony_ci| 参数名   | 类型                                       | 必填 | 说明                                                         |
68e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ |
69e41f4b71Sopenharmony_ci| name     | string                                     | 是   | 锁的名字;该参数必须为字符串类型。                                                   |
70e41f4b71Sopenharmony_ci| type     | [RunningLockType](#runninglocktype)        | 是   | 要创建的锁的类型;该参数必须是一个枚举类。                                           |
71e41f4b71Sopenharmony_ci| callback | AsyncCallback<[RunningLock](#runninglock)> | 是   | 回调函数。当创建锁成功,err为undefined,data为创建的RunningLock;否则为错误对象;AsyncCallback封装了一个RunningLock类型的类。 |
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci**错误码:**
74e41f4b71Sopenharmony_ci
75e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[RunningLock锁错误码](errorcode-runninglock.md)。
76e41f4b71Sopenharmony_ci
77e41f4b71Sopenharmony_ci| 错误码ID   | 错误信息    |
78e41f4b71Sopenharmony_ci|---------|---------|
79e41f4b71Sopenharmony_ci| 401     | Parameter error. Possible causes: 1.Parameter verification failed. |
80e41f4b71Sopenharmony_ci| 201     | If the permission is denied.|
81e41f4b71Sopenharmony_ci
82e41f4b71Sopenharmony_ci**示例:**
83e41f4b71Sopenharmony_ci
84e41f4b71Sopenharmony_ci```js
85e41f4b71Sopenharmony_ci
86e41f4b71Sopenharmony_cirunningLock.create('running_lock_test', runningLock.RunningLockType.PROXIMITY_SCREEN_CONTROL, (err: Error, lock: runningLock.RunningLock) => {
87e41f4b71Sopenharmony_ci    if (typeof err === 'undefined') {
88e41f4b71Sopenharmony_ci        console.info('created running lock: ' + lock);
89e41f4b71Sopenharmony_ci    } else {
90e41f4b71Sopenharmony_ci        console.error('create running lock failed, err: ' + err);
91e41f4b71Sopenharmony_ci    }
92e41f4b71Sopenharmony_ci});
93e41f4b71Sopenharmony_ci```
94e41f4b71Sopenharmony_ci
95e41f4b71Sopenharmony_ci## runningLock.create<sup>9+</sup>
96e41f4b71Sopenharmony_ci
97e41f4b71Sopenharmony_cicreate(name: string, type: RunningLockType): Promise&lt;RunningLock&gt;
98e41f4b71Sopenharmony_ci
99e41f4b71Sopenharmony_ci创建RunningLock锁。
100e41f4b71Sopenharmony_ci
101e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.PowerManager.PowerManager.Core
102e41f4b71Sopenharmony_ci
103e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.RUNNING_LOCK
104e41f4b71Sopenharmony_ci
105e41f4b71Sopenharmony_ci**参数:**
106e41f4b71Sopenharmony_ci
107e41f4b71Sopenharmony_ci| 参数名 | 类型                                | 必填 | 说明               |
108e41f4b71Sopenharmony_ci| ------ | ----------------------------------- | ---- | ------------------ |
109e41f4b71Sopenharmony_ci| name   | string                              | 是   | 锁的名字;该参数必须为字符串类型。 |
110e41f4b71Sopenharmony_ci| type   | [RunningLockType](#runninglocktype) | 是   | 要创建的锁的类型;该参数必须是一个枚举类。 |
111e41f4b71Sopenharmony_ci
112e41f4b71Sopenharmony_ci**返回值:**
113e41f4b71Sopenharmony_ci
114e41f4b71Sopenharmony_ci| 类型                                       | 说明                                 |
115e41f4b71Sopenharmony_ci| ------------------------------------------ | ------------------------------------ |
116e41f4b71Sopenharmony_ci| Promise&lt;[RunningLock](#runninglock)&gt; | Promise对象,返回RunningLock锁对象。 |
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci**错误码:**
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[RunningLock锁错误码](errorcode-runninglock.md)。
121e41f4b71Sopenharmony_ci
122e41f4b71Sopenharmony_ci| 错误码ID   | 错误信息    |
123e41f4b71Sopenharmony_ci|---------|---------|
124e41f4b71Sopenharmony_ci| 401     | Parameter error. Possible causes: 1.Parameter verification failed. |
125e41f4b71Sopenharmony_ci| 201     | If the permission is denied.|
126e41f4b71Sopenharmony_ci
127e41f4b71Sopenharmony_ci**示例:**
128e41f4b71Sopenharmony_ci
129e41f4b71Sopenharmony_ci```js
130e41f4b71Sopenharmony_ci
131e41f4b71Sopenharmony_cirunningLock.create('running_lock_test', runningLock.RunningLockType.PROXIMITY_SCREEN_CONTROL, (err: Error, lock: runningLock.RunningLock) => {
132e41f4b71Sopenharmony_ci    if (typeof err === 'undefined') {
133e41f4b71Sopenharmony_ci        console.info('created running lock: ' + lock);
134e41f4b71Sopenharmony_ci    } else {
135e41f4b71Sopenharmony_ci        console.error('create running lock failed, err: ' + err);
136e41f4b71Sopenharmony_ci    }
137e41f4b71Sopenharmony_ci});
138e41f4b71Sopenharmony_ci```
139e41f4b71Sopenharmony_ci
140e41f4b71Sopenharmony_ci## runningLock.isRunningLockTypeSupported<sup>(deprecated)</sup>
141e41f4b71Sopenharmony_ci
142e41f4b71Sopenharmony_ciisRunningLockTypeSupported(type: RunningLockType, callback: AsyncCallback&lt;boolean&gt;): void
143e41f4b71Sopenharmony_ci
144e41f4b71Sopenharmony_ci> **说明:**<br>从API version 9开始不再维护,建议使用[runningLock.isSupported](#runninglockissupported9)替代。
145e41f4b71Sopenharmony_ci
146e41f4b71Sopenharmony_ci查询系统是否支持该类型的锁。使用callback异步回调。
147e41f4b71Sopenharmony_ci
148e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.PowerManager.PowerManager.Core
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ci**参数:**
151e41f4b71Sopenharmony_ci
152e41f4b71Sopenharmony_ci| 参数名   | 类型                                | 必填 | 说明                                                         |
153e41f4b71Sopenharmony_ci| -------- | ----------------------------------- | ---- | ------------------------------------------------------------ |
154e41f4b71Sopenharmony_ci| type     | [RunningLockType](#runninglocktype) | 是   | 需要查询的锁的类型。                                         |
155e41f4b71Sopenharmony_ci| callback | AsyncCallback&lt;boolean&gt;        | 是   | 回调函数。当查询成功,err为undefined,data为获取到的支持情况,返回true表示支持,返回false表示不支持;否则为错误对象。 |
156e41f4b71Sopenharmony_ci
157e41f4b71Sopenharmony_ci**示例:**
158e41f4b71Sopenharmony_ci
159e41f4b71Sopenharmony_ci```js
160e41f4b71Sopenharmony_cirunningLock.isRunningLockTypeSupported(runningLock.RunningLockType.BACKGROUND, (err: Error, data: boolean) => {
161e41f4b71Sopenharmony_ci    if (typeof err === 'undefined') {
162e41f4b71Sopenharmony_ci        console.info('BACKGROUND lock support status: ' + data);
163e41f4b71Sopenharmony_ci    } else {
164e41f4b71Sopenharmony_ci        console.log('check BACKGROUND lock support status failed, err: ' + err);
165e41f4b71Sopenharmony_ci    }
166e41f4b71Sopenharmony_ci});
167e41f4b71Sopenharmony_ci```
168e41f4b71Sopenharmony_ci
169e41f4b71Sopenharmony_ci## runningLock.isRunningLockTypeSupported<sup>(deprecated)</sup>
170e41f4b71Sopenharmony_ci
171e41f4b71Sopenharmony_ciisRunningLockTypeSupported(type: RunningLockType): Promise&lt;boolean>
172e41f4b71Sopenharmony_ci
173e41f4b71Sopenharmony_ci> **说明:**<br>从API version 9开始不再维护,建议使用[runningLock.isSupported](#runninglockissupported9)替代。
174e41f4b71Sopenharmony_ci
175e41f4b71Sopenharmony_ci查询系统是否支持该类型的锁。使用Promise异步回调。
176e41f4b71Sopenharmony_ci
177e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.PowerManager.PowerManager.Core
178e41f4b71Sopenharmony_ci
179e41f4b71Sopenharmony_ci**参数:**
180e41f4b71Sopenharmony_ci
181e41f4b71Sopenharmony_ci| 参数名 | 类型                                | 必填 | 说明                 |
182e41f4b71Sopenharmony_ci| ------ | ----------------------------------- | ---- | -------------------- |
183e41f4b71Sopenharmony_ci| type   | [RunningLockType](#runninglocktype) | 是   | 需要查询的锁的类型。 |
184e41f4b71Sopenharmony_ci
185e41f4b71Sopenharmony_ci**返回值:**
186e41f4b71Sopenharmony_ci
187e41f4b71Sopenharmony_ci| 类型                   | 说明                                                 |
188e41f4b71Sopenharmony_ci| ---------------------- | ---------------------------------------------------- |
189e41f4b71Sopenharmony_ci| Promise&lt;boolean&gt; | Promise对象。返回true表示支持;返回false表示不支持。 |
190e41f4b71Sopenharmony_ci
191e41f4b71Sopenharmony_ci**示例:**
192e41f4b71Sopenharmony_ci
193e41f4b71Sopenharmony_ci```js
194e41f4b71Sopenharmony_cirunningLock.isRunningLockTypeSupported(runningLock.RunningLockType.BACKGROUND)
195e41f4b71Sopenharmony_ci.then((data: boolean) => {
196e41f4b71Sopenharmony_ci    console.info('BACKGROUND lock support status: ' + data);
197e41f4b71Sopenharmony_ci})
198e41f4b71Sopenharmony_ci.catch((err: Error) => {
199e41f4b71Sopenharmony_ci    console.log('check BACKGROUND lock support status failed, err: ' + err);
200e41f4b71Sopenharmony_ci});
201e41f4b71Sopenharmony_ci```
202e41f4b71Sopenharmony_ci
203e41f4b71Sopenharmony_ci## runningLock.createRunningLock<sup>(deprecated)</sup>
204e41f4b71Sopenharmony_ci
205e41f4b71Sopenharmony_cicreateRunningLock(name: string, type: RunningLockType, callback: AsyncCallback&lt;RunningLock&gt;): void
206e41f4b71Sopenharmony_ci
207e41f4b71Sopenharmony_ci> **说明:**<br>从API version 9开始不再维护,建议使用[runningLock.create](#runninglockcreate9)替代。
208e41f4b71Sopenharmony_ci
209e41f4b71Sopenharmony_ci创建RunningLock锁。
210e41f4b71Sopenharmony_ci
211e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.PowerManager.PowerManager.Core
212e41f4b71Sopenharmony_ci
213e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.RUNNING_LOCK
214e41f4b71Sopenharmony_ci
215e41f4b71Sopenharmony_ci**参数:**
216e41f4b71Sopenharmony_ci
217e41f4b71Sopenharmony_ci| 参数名   | 类型                                       | 必填 | 说明                                                         |
218e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ |
219e41f4b71Sopenharmony_ci| name     | string                                     | 是   | 锁的名字。                                                   |
220e41f4b71Sopenharmony_ci| type     | [RunningLockType](#runninglocktype)        | 是   | 要创建的锁的类型。                                           |
221e41f4b71Sopenharmony_ci| callback | AsyncCallback<[RunningLock](#runninglock)> | 是   | 回调函数。当创建锁成功,err为undefined,data为创建的RunningLock;否则为错误对象。 |
222e41f4b71Sopenharmony_ci
223e41f4b71Sopenharmony_ci**示例:**
224e41f4b71Sopenharmony_ci
225e41f4b71Sopenharmony_ci```js
226e41f4b71Sopenharmony_cirunningLock.createRunningLock('running_lock_test', runningLock.RunningLockType.BACKGROUND, (err: Error, lock: runningLock.RunningLock) => {
227e41f4b71Sopenharmony_ci    if (typeof err === 'undefined') {
228e41f4b71Sopenharmony_ci        console.info('created running lock: ' + lock);
229e41f4b71Sopenharmony_ci    } else {
230e41f4b71Sopenharmony_ci        console.error('create running lock failed, err: ' + err);
231e41f4b71Sopenharmony_ci    }
232e41f4b71Sopenharmony_ci});
233e41f4b71Sopenharmony_ci```
234e41f4b71Sopenharmony_ci
235e41f4b71Sopenharmony_ci## runningLock.createRunningLock<sup>(deprecated)</sup>
236e41f4b71Sopenharmony_ci
237e41f4b71Sopenharmony_cicreateRunningLock(name: string, type: RunningLockType): Promise&lt;RunningLock&gt;
238e41f4b71Sopenharmony_ci
239e41f4b71Sopenharmony_ci> **说明:**<br>从API version 9开始不再维护,建议使用[runningLock.create](#runninglockcreate9)替代。
240e41f4b71Sopenharmony_ci
241e41f4b71Sopenharmony_ci创建RunningLock锁。
242e41f4b71Sopenharmony_ci
243e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.PowerManager.PowerManager.Core
244e41f4b71Sopenharmony_ci
245e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.RUNNING_LOCK
246e41f4b71Sopenharmony_ci
247e41f4b71Sopenharmony_ci**参数:**
248e41f4b71Sopenharmony_ci
249e41f4b71Sopenharmony_ci| 参数名 | 类型                                | 必填 | 说明               |
250e41f4b71Sopenharmony_ci| ------ | ----------------------------------- | ---- | ------------------ |
251e41f4b71Sopenharmony_ci| name   | string                              | 是   | 锁的名字。         |
252e41f4b71Sopenharmony_ci| type   | [RunningLockType](#runninglocktype) | 是   | 要创建的锁的类型。 |
253e41f4b71Sopenharmony_ci
254e41f4b71Sopenharmony_ci**返回值:**
255e41f4b71Sopenharmony_ci
256e41f4b71Sopenharmony_ci| 类型                                       | 说明                                 |
257e41f4b71Sopenharmony_ci| ------------------------------------------ | ------------------------------------ |
258e41f4b71Sopenharmony_ci| Promise&lt;[RunningLock](#runninglock)&gt; | Promise对象,返回RunningLock锁对象。 |
259e41f4b71Sopenharmony_ci
260e41f4b71Sopenharmony_ci**示例:**
261e41f4b71Sopenharmony_ci
262e41f4b71Sopenharmony_ci```js
263e41f4b71Sopenharmony_cirunningLock.createRunningLock('running_lock_test', runningLock.RunningLockType.BACKGROUND)
264e41f4b71Sopenharmony_ci.then((lock: runningLock.RunningLock) => {
265e41f4b71Sopenharmony_ci    console.info('created running lock: ' + lock);
266e41f4b71Sopenharmony_ci})
267e41f4b71Sopenharmony_ci.catch((err: Error) => {
268e41f4b71Sopenharmony_ci    console.log('create running lock failed, err: ' + err);
269e41f4b71Sopenharmony_ci});
270e41f4b71Sopenharmony_ci```
271e41f4b71Sopenharmony_ci
272e41f4b71Sopenharmony_ci## RunningLock
273e41f4b71Sopenharmony_ci
274e41f4b71Sopenharmony_ci阻止系统休眠的锁。
275e41f4b71Sopenharmony_ci
276e41f4b71Sopenharmony_ci### hold<sup>9+</sup>
277e41f4b71Sopenharmony_ci
278e41f4b71Sopenharmony_cihold(timeout: number): void
279e41f4b71Sopenharmony_ci
280e41f4b71Sopenharmony_ci锁定和持有RunningLock。
281e41f4b71Sopenharmony_ci
282e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.PowerManager.PowerManager.Core
283e41f4b71Sopenharmony_ci
284e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.RUNNING_LOCK
285e41f4b71Sopenharmony_ci
286e41f4b71Sopenharmony_ci**参数:**
287e41f4b71Sopenharmony_ci
288e41f4b71Sopenharmony_ci| 参数名  | 类型   | 必填 | 说明                                      |
289e41f4b71Sopenharmony_ci| ------- | ------ | ---- | ----------------------------------------- |
290e41f4b71Sopenharmony_ci| timeout | number | 是   | 锁定和持有RunningLock的时长,单位:毫秒;该参数必须为数字类型。 timeout = -1为永久持锁,需要主动释放;timeout = 0 3s后超时释放; timeout > 0 按传入值超时释放|
291e41f4b71Sopenharmony_ci
292e41f4b71Sopenharmony_ci**错误码:**
293e41f4b71Sopenharmony_ci
294e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[RunningLock锁错误码](errorcode-runninglock.md)。
295e41f4b71Sopenharmony_ci
296e41f4b71Sopenharmony_ci| 错误码ID   | 错误信息     |
297e41f4b71Sopenharmony_ci|---------|----------|
298e41f4b71Sopenharmony_ci| 4900101 | Failed to connect to the service. |
299e41f4b71Sopenharmony_ci| 401     | Parameter error. Possible causes: 1. Incorrect parameter types; |
300e41f4b71Sopenharmony_ci| 201     | If the permission is denied.|
301e41f4b71Sopenharmony_ci
302e41f4b71Sopenharmony_ci**示例:**
303e41f4b71Sopenharmony_ci
304e41f4b71Sopenharmony_ci```js
305e41f4b71Sopenharmony_cistatic recordLock = null;
306e41f4b71Sopenharmony_ci
307e41f4b71Sopenharmony_ciif (recordLock) {
308e41f4b71Sopenharmony_ci    recordLock.hold(500);
309e41f4b71Sopenharmony_ci    console.info('hold running lock success');
310e41f4b71Sopenharmony_ci} else {
311e41f4b71Sopenharmony_ci   runningLock.create('running_lock_test', runningLock.RunningLockType.PROXIMITY_SCREEN_CONTROL, (err: Error, lock: runningLock.RunningLock) => {
312e41f4b71Sopenharmony_ci        if (typeof err === 'undefined') {
313e41f4b71Sopenharmony_ci            console.info('create running lock: ' + lock);
314e41f4b71Sopenharmony_ci            recordLock = lock;
315e41f4b71Sopenharmony_ci            try {
316e41f4b71Sopenharmony_ci                lock.hold(500);
317e41f4b71Sopenharmony_ci                console.info('hold running lock success');
318e41f4b71Sopenharmony_ci            } catch(err) {
319e41f4b71Sopenharmony_ci                console.error('hold running lock failed, err: ' + err);
320e41f4b71Sopenharmony_ci            }
321e41f4b71Sopenharmony_ci        } else {
322e41f4b71Sopenharmony_ci            console.error('create running lock failed, err: ' + err);
323e41f4b71Sopenharmony_ci        }
324e41f4b71Sopenharmony_ci    });
325e41f4b71Sopenharmony_ci}
326e41f4b71Sopenharmony_ci```
327e41f4b71Sopenharmony_ci
328e41f4b71Sopenharmony_ci### unhold<sup>9+</sup>
329e41f4b71Sopenharmony_ci
330e41f4b71Sopenharmony_ciunhold(): void
331e41f4b71Sopenharmony_ci
332e41f4b71Sopenharmony_ci释放RunningLock锁。
333e41f4b71Sopenharmony_ci
334e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.PowerManager.PowerManager.Core
335e41f4b71Sopenharmony_ci
336e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.RUNNING_LOCK
337e41f4b71Sopenharmony_ci
338e41f4b71Sopenharmony_ci**错误码:**
339e41f4b71Sopenharmony_ci
340e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[RunningLock锁错误码](errorcode-runninglock.md)。
341e41f4b71Sopenharmony_ci
342e41f4b71Sopenharmony_ci| 错误码ID   | 错误信息     |
343e41f4b71Sopenharmony_ci|---------|----------|
344e41f4b71Sopenharmony_ci| 4900101 | Failed to connect to the service. |
345e41f4b71Sopenharmony_ci| 201     | If the permission is denied.|
346e41f4b71Sopenharmony_ci
347e41f4b71Sopenharmony_ci
348e41f4b71Sopenharmony_ci**示例:**
349e41f4b71Sopenharmony_ci
350e41f4b71Sopenharmony_ci```js
351e41f4b71Sopenharmony_cistatic recordLock = null;
352e41f4b71Sopenharmony_ci
353e41f4b71Sopenharmony_ciif (recordLock) {
354e41f4b71Sopenharmony_ci    recordLock.unhold();
355e41f4b71Sopenharmony_ci    console.info('unhold running lock success');
356e41f4b71Sopenharmony_ci} else {
357e41f4b71Sopenharmony_ci    runningLock.create('running_lock_test', runningLock.RunningLockType.PROXIMITY_SCREEN_CONTROL, (err: Error, lock: runningLock.RunningLock) => {
358e41f4b71Sopenharmony_ci        if (typeof err === 'undefined') {
359e41f4b71Sopenharmony_ci            console.info('create running lock: ' + lock);
360e41f4b71Sopenharmony_ci            recordLock = lock;
361e41f4b71Sopenharmony_ci            try {
362e41f4b71Sopenharmony_ci                lock.unhold();
363e41f4b71Sopenharmony_ci                console.info('unhold running lock success');
364e41f4b71Sopenharmony_ci            } catch(err) {
365e41f4b71Sopenharmony_ci                console.error('unhold running lock failed, err: ' + err);
366e41f4b71Sopenharmony_ci            }
367e41f4b71Sopenharmony_ci        } else {
368e41f4b71Sopenharmony_ci            console.error('create running lock failed, err: ' + err);
369e41f4b71Sopenharmony_ci        }
370e41f4b71Sopenharmony_ci    });
371e41f4b71Sopenharmony_ci}
372e41f4b71Sopenharmony_ci```
373e41f4b71Sopenharmony_ci
374e41f4b71Sopenharmony_ci### isHolding<sup>9+</sup>
375e41f4b71Sopenharmony_ci
376e41f4b71Sopenharmony_ciisHolding(): boolean
377e41f4b71Sopenharmony_ci
378e41f4b71Sopenharmony_ci查询当前RunningLock是持有状态还是释放状态。
379e41f4b71Sopenharmony_ci
380e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.PowerManager.PowerManager.Core
381e41f4b71Sopenharmony_ci
382e41f4b71Sopenharmony_ci**返回值:**
383e41f4b71Sopenharmony_ci
384e41f4b71Sopenharmony_ci| 类型    | 说明                                                         |
385e41f4b71Sopenharmony_ci| ------- | ------------------------------------------------------------ |
386e41f4b71Sopenharmony_ci| boolean | 返回true表示当前RunningLock是持有状态,返回false表示当前RunningLock是释放状态。 |
387e41f4b71Sopenharmony_ci
388e41f4b71Sopenharmony_ci**错误码:**
389e41f4b71Sopenharmony_ci
390e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[RunningLock锁错误码](errorcode-runninglock.md)。
391e41f4b71Sopenharmony_ci
392e41f4b71Sopenharmony_ci| 错误码ID   | 错误信息    |
393e41f4b71Sopenharmony_ci|---------|---------|
394e41f4b71Sopenharmony_ci| 4900101 | Failed to connect to the service. |
395e41f4b71Sopenharmony_ci
396e41f4b71Sopenharmony_ci**示例:**
397e41f4b71Sopenharmony_ci
398e41f4b71Sopenharmony_ci```js
399e41f4b71Sopenharmony_ci
400e41f4b71Sopenharmony_cistatic recordLock = null;
401e41f4b71Sopenharmony_ci
402e41f4b71Sopenharmony_ciif (recordLock) {
403e41f4b71Sopenharmony_ci    let isHolding = recordLock.isHolding();
404e41f4b71Sopenharmony_ci    console.info('check running lock holding status: ' + isHolding);
405e41f4b71Sopenharmony_ci} else {
406e41f4b71Sopenharmony_ci    runningLock.create('running_lock_test', runningLock.RunningLockType.PROXIMITY_SCREEN_CONTROL, (err: Error, lock: runningLock.RunningLock) => {
407e41f4b71Sopenharmony_ci        if (typeof err === 'undefined') {
408e41f4b71Sopenharmony_ci            console.info('create running lock: ' + lock);
409e41f4b71Sopenharmony_ci            runningLock = lock;
410e41f4b71Sopenharmony_ci            try {
411e41f4b71Sopenharmony_ci                let isHolding = lock.isHolding();
412e41f4b71Sopenharmony_ci                console.info('check running lock holding status: ' + isHolding);
413e41f4b71Sopenharmony_ci            } catch(err) {
414e41f4b71Sopenharmony_ci                console.error('check running lock holding status failed, err: ' + err);
415e41f4b71Sopenharmony_ci            }
416e41f4b71Sopenharmony_ci        } else {
417e41f4b71Sopenharmony_ci            console.error('create running lock failed, err: ' + err);
418e41f4b71Sopenharmony_ci        }
419e41f4b71Sopenharmony_ci    });
420e41f4b71Sopenharmony_ci}
421e41f4b71Sopenharmony_ci```
422e41f4b71Sopenharmony_ci
423e41f4b71Sopenharmony_ci### lock<sup>(deprecated)</sup>
424e41f4b71Sopenharmony_ci
425e41f4b71Sopenharmony_cilock(timeout: number): void
426e41f4b71Sopenharmony_ci
427e41f4b71Sopenharmony_ci> **说明:**<br>从API version 9开始不再维护,建议使用[RunningLock.hold](#hold9)替代。
428e41f4b71Sopenharmony_ci
429e41f4b71Sopenharmony_ci锁定和持有RunningLock。
430e41f4b71Sopenharmony_ci
431e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.PowerManager.PowerManager.Core
432e41f4b71Sopenharmony_ci
433e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.RUNNING_LOCK
434e41f4b71Sopenharmony_ci
435e41f4b71Sopenharmony_ci**参数:**
436e41f4b71Sopenharmony_ci
437e41f4b71Sopenharmony_ci| 参数名  | 类型   | 必填 | 说明                                      |
438e41f4b71Sopenharmony_ci| ------- | ------ | ---- | ----------------------------------------- |
439e41f4b71Sopenharmony_ci| timeout | number | 是   | 锁定和持有RunningLock的时长,单位:毫秒。 |
440e41f4b71Sopenharmony_ci
441e41f4b71Sopenharmony_ci**示例:**
442e41f4b71Sopenharmony_ci
443e41f4b71Sopenharmony_ci```js
444e41f4b71Sopenharmony_cirunningLock.createRunningLock('running_lock_test', runningLock.RunningLockType.BACKGROUND)
445e41f4b71Sopenharmony_ci.then((lock: runningLock.RunningLock) => {
446e41f4b71Sopenharmony_ci    lock.lock(500);
447e41f4b71Sopenharmony_ci    console.info('create running lock and lock success');
448e41f4b71Sopenharmony_ci})
449e41f4b71Sopenharmony_ci.catch((err: Error) => {
450e41f4b71Sopenharmony_ci    console.error('create running lock failed, err: ' + err);
451e41f4b71Sopenharmony_ci});
452e41f4b71Sopenharmony_ci```
453e41f4b71Sopenharmony_ci
454e41f4b71Sopenharmony_ci### unlock<sup>(deprecated)</sup>
455e41f4b71Sopenharmony_ci
456e41f4b71Sopenharmony_ciunlock(): void
457e41f4b71Sopenharmony_ci
458e41f4b71Sopenharmony_ci> **说明:**<br>从API version 9开始不再维护,建议使用[RunningLock.unhold](#unhold9)替代。
459e41f4b71Sopenharmony_ci
460e41f4b71Sopenharmony_ci释放RunningLock锁。
461e41f4b71Sopenharmony_ci
462e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.PowerManager.PowerManager.Core
463e41f4b71Sopenharmony_ci
464e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.RUNNING_LOCK
465e41f4b71Sopenharmony_ci
466e41f4b71Sopenharmony_ci**示例:**
467e41f4b71Sopenharmony_ci
468e41f4b71Sopenharmony_ci```js
469e41f4b71Sopenharmony_cirunningLock.createRunningLock('running_lock_test', runningLock.RunningLockType.BACKGROUND)
470e41f4b71Sopenharmony_ci.then((lock: runningLock.RunningLock) => {
471e41f4b71Sopenharmony_ci    lock.unlock();
472e41f4b71Sopenharmony_ci    console.info('create running lock and unlock success');
473e41f4b71Sopenharmony_ci})
474e41f4b71Sopenharmony_ci.catch((err: Error) => {
475e41f4b71Sopenharmony_ci    console.error('create running lock failed, err: ' + err);
476e41f4b71Sopenharmony_ci});
477e41f4b71Sopenharmony_ci```
478e41f4b71Sopenharmony_ci
479e41f4b71Sopenharmony_ci### isUsed<sup>(deprecated)</sup>
480e41f4b71Sopenharmony_ci
481e41f4b71Sopenharmony_ciisUsed(): boolean
482e41f4b71Sopenharmony_ci
483e41f4b71Sopenharmony_ci> **说明:**<br>从API version 9开始不再维护,建议使用[RunningLock.isHolding](#isholding9)替代。
484e41f4b71Sopenharmony_ci
485e41f4b71Sopenharmony_ci查询当前RunningLock是持有状态还是释放状态。
486e41f4b71Sopenharmony_ci
487e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.PowerManager.PowerManager.Core
488e41f4b71Sopenharmony_ci
489e41f4b71Sopenharmony_ci**返回值:**
490e41f4b71Sopenharmony_ci| 类型    | 说明                                                         |
491e41f4b71Sopenharmony_ci| ------- | ------------------------------------------------------------ |
492e41f4b71Sopenharmony_ci| boolean | 返回true表示当前RunningLock是持有状态,返回false表示当前RunningLock是释放状态。 |
493e41f4b71Sopenharmony_ci
494e41f4b71Sopenharmony_ci**示例:**
495e41f4b71Sopenharmony_ci
496e41f4b71Sopenharmony_ci```js
497e41f4b71Sopenharmony_cirunningLock.createRunningLock('running_lock_test', runningLock.RunningLockType.BACKGROUND)
498e41f4b71Sopenharmony_ci.then((lock: runningLock.RunningLock) => {
499e41f4b71Sopenharmony_ci    let isUsed = lock.isUsed();
500e41f4b71Sopenharmony_ci    console.info('check running lock used status: ' + isUsed);
501e41f4b71Sopenharmony_ci})
502e41f4b71Sopenharmony_ci.catch((err: Error) => {
503e41f4b71Sopenharmony_ci    console.error('check running lock used status failed, err: ' + err);
504e41f4b71Sopenharmony_ci});
505e41f4b71Sopenharmony_ci```
506e41f4b71Sopenharmony_ci
507e41f4b71Sopenharmony_ci## RunningLockType
508e41f4b71Sopenharmony_ci
509e41f4b71Sopenharmony_ciRunningLock锁的类型。
510e41f4b71Sopenharmony_ci
511e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.PowerManager.PowerManager.Core
512e41f4b71Sopenharmony_ci
513e41f4b71Sopenharmony_ci| 名称                              | 值   | 说明                                                         |
514e41f4b71Sopenharmony_ci| --------------------------------- | ---- | ------------------------------------------------------------ |
515e41f4b71Sopenharmony_ci| BACKGROUND<sup>(deprecated)</sup> | 1    | 阻止系统休眠的锁。<br>**说明:** 从API version 7开始支持,从API version 10开始废弃。 |
516e41f4b71Sopenharmony_ci| PROXIMITY_SCREEN_CONTROL          | 2    | 接近光锁,使能接近光传感器,并根据传感器与障碍物的距离远近发起亮灭屏流程。  |