js-apis-system-timer.md 12.9 KB
Newer Older
1
# @ohos.systemTimer (系统定时器)
2

M
MangTsang 已提交
3
本模块主要由系统定时器功能组成。开发者可以使用定时功能实现定时服务,如闹钟等。
4

5 6 7 8
> **说明:**
>
> - 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
> - 本模块接口为系统接口。
9 10 11 12

## 导入模块


13
```js
14 15 16
import systemTimer from '@ohos.systemTimer';
```

17 18 19 20
## 常量

支持创建的定时器类型。

W
wangtong 已提交
21 22
**系统能力:** SystemCapability.MiscServices.Time

23 24
| 名称                | 类型   | 值   | 说明                         |
| ------------------- | ------ | ---- | ---------------------------- |
Z
zhangjunxi 已提交
25
| TIMER_TYPE_REALTIME | number | 1    | 系统启动时间定时器。(定时器启动时间不能晚于当前设置的系统时间)         |
26 27 28 29 30 31 32 33 34 35
| TIMER_TYPE_WAKEUP   | number | 2    | 唤醒定时器。                 |
| TIMER_TYPE_EXACT    | number | 4    | 精准定时器。                 |
| TIMER_TYPE_IDLE     | number | 8    | IDLE模式定时器(暂不支持)。 |

 ## TimerOptions

创建系统定时器的初始化选项。

**系统能力:** SystemCapability.MiscServices.Time

36 37
| 名称      | 类型                                          | 必填 | 说明                                                         |
| --------- | --------------------------------------------- | ---- | ------------------------------------------------------------ |
W
wangtong 已提交
38
| type      | number                                        | 是   | 定时器类型。<br>取值为1,表示为系统启动时间定时器(定时器启动时间不能晚于当前设置的系统时间) ;<br>取值为2,表示为唤醒定时器;<br>取值为4,表示为精准定时器;<br>取值为8,表示为IDLE模式定时器(暂不支持)。 |
39 40 41 42
| repeat    | boolean                                       | 是   | true为循环定时器,false为单次定时器。                        |
| interval  | number                                        | 否   | 如果是循环定时器,repeat值应大于5000毫秒,非重复定时器置为0。 |
| wantAgent | [WantAgent](js-apis-app-ability-wantAgent.md) | 否   | 设置通知的WantAgent,定时器到期后通知。(支持拉起应用MainAbility,暂不支持拉起ServiceAbility。) |
| callback  | number                                        | 是   | 以回调函数的形式返回定时器的ID。                             |
43

44

W
wangtong 已提交
45
## systemTimer.createTimer
46 47 48

createTimer(options: TimerOptions, callback: AsyncCallback&lt;number&gt;): void

49
创建定时器,使用callback异步回调。
50

W
wangtong 已提交
51 52
**系统接口:** 此接口为系统接口

53 54 55 56
**系统能力:** SystemCapability.MiscServices.Time

**参数:**

57 58 59 60
| 参数名   | 类型                          | 必填 | 说明                                                         |
| -------- | ----------------------------- | ---- | ------------------------------------------------------------ |
| options  | [TimerOptions](#timeroptions) | 是   | 创建系统定时器的初始化选项,包括定时器类型、是否循环触发、间隔时间、WantAgent通知机制等。 |
| callback | AsyncCallback&lt;number>      | 是   | 回调函数,返回定时器的ID。                                   |
61 62 63

**示例:**

64
```js
65
export default {
66 67 68 69 70 71 72 73 74 75
  systemTimer () {
    let options = {
      type: systemTimer.TIMER_TYPE_REALTIME,
      repeat: false
    };
    try {
      systemTimer.createTimer(options, (error, timerId) => {
        if (error) {
          console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
          return;
W
wangtong 已提交
76
        }
77
        console.info(`Succeeded in creating timer. timerId: ${timerId}`);
78 79 80
      });
    } catch(e) {
      console.info(`Failed to create timer. message: ${e.message}, code: ${e.code}`);
81
    }
82
  }
83
}
84
```
85

W
wangtong 已提交
86
## systemTimer.createTimer
87 88 89

createTimer(options: TimerOptions): Promise&lt;number&gt;

90
创建定时器,使用Promise异步回调。
91

W
wangtong 已提交
92 93
**系统接口:** 此接口为系统接口

94 95 96 97
**系统能力:** SystemCapability.MiscServices.Time

**参数:**

98 99 100
| 参数名  | 类型                          | 必填 | 说明                                                         |
| ------- | ----------------------------- | ---- | ------------------------------------------------------------ |
| options | [TimerOptions](#timeroptions) | 是   | 创建系统定时器的初始化选项,包括定时器类型、是否循环触发、间隔时间、WantAgent通知机制等。 |
101 102 103

**返回值:**

104 105 106
| 类型                  | 说明                          |
| --------------------- | ----------------------------- |
| Promise&lt;number&gt; | Promise对象,返回定时器的ID。 |
107 108 109

**示例:**

110
```js
111
export default {
112 113 114 115 116 117 118
  systemTimer () {
    let options = {
      type: systemTimer.TIMER_TYPE_REALTIME,
      repeat:false
    };   
    try {
      systemTimer.createTimer(options).then((timerId) => {
119
        console.info(`Succeeded in creating timer. timerId: ${timerId}`);
120 121 122 123 124
      }).catch((error) => {
        console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
      });
    } catch(e) {
      console.info(`Failed to create timer. message: ${e.message}, code: ${e.code}`);
125
    }
126
  }
127
}
128
```
129

W
wangtong 已提交
130
## systemTimer.startTimer
131 132 133

startTimer(timer: number, triggerTime: number, callback: AsyncCallback&lt;void&gt;): void

134
开始定时器,使用callback异步回调。
135

W
wangtong 已提交
136 137
**系统接口:** 此接口为系统接口

138 139 140 141
**系统能力:** SystemCapability.MiscServices.Time

**参数:**

142 143 144 145 146
| 参数名      | 类型                   | 必填 | 说明                           |
| ----------- | ---------------------- | ---- | ------------------------------ |
| timer       | number                 | 是   | 定时器的ID。                   |
| triggerTime | number                 | 是   | 定时器的触发时间,单位:毫秒。 |
| callback    | AsyncCallback&lt;void> | 是   | 回调函数。                     |
147 148 149

**示例:**

150
```js
151
export default {
152 153 154 155 156 157 158 159 160 161 162 163 164
  async systemTimer () {
    let options = {
      type: systemTimer.TIMER_TYPE_REALTIME,
      repeat:false
    }
  let timerId = await systemTimer.createTimer(options);
  let triggerTime = new Date().getTime();
  triggerTime += 3000;
  try {
      systemTimer.startTimer(timerId, triggerTime, (error) => {
        if (error) {
          console.info(`Failed to start timer. message: ${error.message}, code: ${error.code}`);
          return;
165
        }
166 167 168 169
        console.info(`Succeeded in starting timer.`);
      });
    } catch(e) {
      console.info(`Failed to start timer. message: ${e.message}, code: ${e.code}`);
170
    }
171
  }
172
}
173
```
W
wangtong 已提交
174

W
wangtong 已提交
175
## systemTimer.startTimer
176 177 178

startTimer(timer: number, triggerTime: number): Promise&lt;void&gt;

179
开始定时器,使用Promise异步回调。
180

W
wangtong 已提交
181 182
**系统接口:** 此接口为系统接口

183 184 185 186
**系统能力:** SystemCapability.MiscServices.Time

**参数:**

187 188 189 190
| 参数名      | 类型   | 必填 | 说明                           |
| ----------- | ------ | ---- | ------------------------------ |
| timer       | number | 是   | 定时器的ID。                   |
| triggerTime | number | 是   | 定时器的触发时间,单位:毫秒。 |
191

192 193 194 195 196
**返回值:**

| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | 无返回结果的Promise对象。 |
197 198 199

**示例:**

200
```js
201
export default {
202 203 204 205
  async systemTimer (){
    let options = {
      type: systemTimer.TIMER_TYPE_REALTIME,
      repeat:false
206
    }
207 208 209 210 211 212 213 214 215 216 217 218 219
    let timerId = await systemTimer.createTimer(options);
    let triggerTime = new Date().getTime();
    triggerTime += 3000;
    try {
      systemTimer.startTimer(timerId, triggerTime).then(() => {
        console.info(`Succeeded in starting timer.`);
         }).catch((error) => {
        console.info(`Failed to start timer. message: ${error.message}, code: ${error.code}`);
      });
    } catch(e) {
      console.info(`Failed to start timer. message: ${e.message}, code: ${e.code}`);
    } 
  }
220
}
221
```
222

W
wangtong 已提交
223
## systemTimer.stopTimer
224 225 226

stopTimer(timer: number, callback: AsyncCallback&lt;void&gt;): void

227
停止定时器,使用callback异步回调。
228

W
wangtong 已提交
229 230
**系统接口:** 此接口为系统接口

231 232 233 234
**系统能力:** SystemCapability.MiscServices.Time

**参数:**

235 236 237 238
| 参数名   | 类型                   | 必填 | 说明         |
| -------- | ---------------------- | ---- | ------------ |
| timer    | number                 | 是   | 定时器的ID。 |
| callback | AsyncCallback&lt;void> | 是   | 回调函数。   |
239 240 241

**示例:**

242
```js
243
export default {
244 245 246 247 248 249 250 251 252 253 254 255 256 257
  async systemTimer () {
    let options = {
      type: systemTimer.TIMER_TYPE_REALTIME,
      repeat:false
    }
    let timerId = await systemTimer.createTimer(options);
    let triggerTime = new Date().getTime();
    triggerTime += 3000;
    systemTimer.startTimer(timerId, triggerTime);
    try {
      systemTimer.stopTimer(timerId, (error) => {
        if (error) {
          console.info(`Failed to stop timer. message: ${error.message}, code: ${error.code}`);
          return;
W
wangtong 已提交
258
        }
259 260 261 262 263 264
        console.info(`Succeeded in stopping timer.`);
      });
    } catch(e) {
      console.info(`Failed to stop timer. message: ${e.message}, code: ${e.code}`);
    }
  }
265
}
266
```
267

W
wangtong 已提交
268
## systemTimer.stopTimer
269 270 271

stopTimer(timer: number): Promise&lt;void&gt;

272
停止定时器,使用Promise异步回调。
273

W
wangtong 已提交
274 275
**系统接口:** 此接口为系统接口

276 277 278 279
**系统能力:** SystemCapability.MiscServices.Time

**参数:**

280 281 282 283 284 285 286 287 288
| 参数名 | 类型   | 必填 | 说明         |
| ------ | ------ | ---- | ------------ |
| timer  | number | 是   | 定时器的ID。 |

**返回值:**

| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | 无返回结果的Promise对象。 |
289 290 291

**示例:**

292
```js
293
export default {
294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310
  async systemTimer (){
    let options = {
      type: systemTimer.TIMER_TYPE_REALTIME,
      repeat:false
    }
    let timerId = await systemTimer.createTimer(options);
    let triggerTime = new Date().getTime();
    triggerTime += 3000;
    systemTimer.startTimer(timerId, triggerTime);
    try {
      systemTimer.stopTimer(timerId).then(() => {
        console.info(`Succeeded in stopping timer.`);
      }).catch((error) => {
        console.info(`Failed to stop timer. message: ${error.message}, code: ${error.code}`);
      });
    } catch(e) {
      console.info(`Failed to stop timer. message: ${e.message}, code: ${e.code}`);
W
wangtong 已提交
311
    }
312
  }
313
}
314
```
315

W
wangtong 已提交
316
## systemTimer.destroyTimer
317 318 319

destroyTimer(timer: number, callback: AsyncCallback&lt;void&gt;): void

320
销毁定时器,使用callback异步回调。
321

W
wangtong 已提交
322 323
**系统接口:** 此接口为系统接口

324 325 326 327
**系统能力:** SystemCapability.MiscServices.Time

**参数:**

328 329 330 331
| 参数名   | 类型                   | 必填 | 说明         |
| -------- | ---------------------- | ---- | ------------ |
| timer    | number                 | 是   | 定时器的ID。 |
| callback | AsyncCallback&lt;void> | 是   | 回调函数。   |
332 333 334

**示例:**

335
```js
336
export default {
337 338 339 340 341 342 343 344 345 346 347 348 349 350 351
  async systemTimer () {
    let options = {
      type: systemTimer.TIMER_TYPE_REALTIME,
      repeat:false
    }
    let timerId = await systemTimer.createTimer(options);
    let triggerTime = new Date().getTime();
    triggerTime += 3000;
    systemTimer.startTimer(timerId, triggerTime);
    systemTimer.stopTimer(timerId);
    try {
      systemTimer.destroyTimer(timerId, (error) => {
        if (error) {
          console.info(`Failed to destroy timer. message: ${error.message}, code: ${error.code}`);
          return;
W
wangtong 已提交
352
        }
353 354 355 356
        console.info(`Succeeded in destroying timer.`);
      });
    } catch(e) {
      console.info(`Failed to destroying timer. message: ${e.message}, code: ${e.code}`);
357
    }
358
  }
359
}
360
```
361

W
wangtong 已提交
362
## systemTimer.destroyTimer
363 364 365

destroyTimer(timer: number): Promise&lt;void&gt;

366
销毁定时器,使用Promise异步回调。
367

W
wangtong 已提交
368 369
**系统接口:** 此接口为系统接口

370 371 372 373
**系统能力:** SystemCapability.MiscServices.Time

**参数:**

374 375 376 377 378 379 380 381 382
| 参数名 | 类型   | 必填 | 说明         |
| ------ | ------ | ---- | ------------ |
| timer  | number | 是   | 定时器的ID。 |

**返回值:**

| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | 无返回结果的Promise对象。 |
383 384 385

**示例:**

386
```js
387
export default {
388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405
  async systemTimer (){
    let options = {
      type: systemTimer.TIMER_TYPE_REALTIME,
      repeat:false
    }
    let timerId = await systemTimer.createTimer(options);
    let triggerTime = new Date().getTime();
    triggerTime += 3000;
    systemTimer.startTimer(timerId, triggerTime);
    systemTimer.stopTimer(timerId);
    try {
      systemTimer.destroyTimer(timerId).then(() => {
         console.info(`Succeeded in destroying timer.`);
      }).catch((error) => {
        console.info(`Failed to destroy timer. message: ${error.message}, code: ${error.code}`);
      });
    } catch(e) {
      console.info(`Failed to destroying timer. message: ${e.message}, code: ${e.code}`);
406
    }
407
  }
408
}
409
```