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<RunningLock>): 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<RunningLock> 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<[RunningLock](#runninglock)> | 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<boolean>): 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<boolean> | 是 | 回调函数。当查询成功,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<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<boolean> | 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<RunningLock>): 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<RunningLock> 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<[RunningLock](#runninglock)> | 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 | 接近光锁,使能接近光传感器,并根据传感器与障碍物的距离远近发起亮灭屏流程。 |