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