js-apis-system-timer.md 12.7 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

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

 ## TimerOptions

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

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

W
wangtong 已提交
36 37 38
| 名称      | 类型                                          | 必填 | 说明                                                         |
| --------- | --------------------------------------------- | ---- | ------------------------------------------------------------ |
| type      | number                                        | 是   | 定时器类型。<br>取值为1,表示为系统启动时间定时器(定时器启动时间不能晚于当前设置的系统时间) ;<br>取值为2,表示为唤醒定时器;<br>取值为4,表示为精准定时器;<br>取值为8,表示为IDLE模式定时器(暂不支持)。 |
39 40
| repeat    | boolean                                       | 是   | 是否为循环定时器。<br>true为循环定时器,false为单次定时器。                        |
| interval  | number                                        | 否   | 定时器时间间隔。 <br>如果是循环定时器,interval值应大于5000毫秒;单次定时器interval值为0。 |
W
wangtong 已提交
41 42
| 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 51 52 53 54

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

**参数:**

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

**示例:**

62
```js
63
export default {
W
wangtong 已提交
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
  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;
        }
        console.info(`Succeeded in creating timer. timerId: ${timerId}`);
      });
    } catch(e) {
      console.info(`Failed to create timer. message: ${e.message}, code: ${e.code}`);
79
    }
W
wangtong 已提交
80
  }
81
}
82
```
83

W
wangtong 已提交
84
## systemTimer.createTimer
85 86 87

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

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

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

**参数:**

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

**返回值:**

100 101 102
| 类型                  | 说明                          |
| --------------------- | ----------------------------- |
| Promise&lt;number&gt; | Promise对象,返回定时器的ID。 |
103 104 105

**示例:**

106
```js
107
export default {
W
wangtong 已提交
108 109 110 111 112 113 114 115 116 117 118 119 120
  systemTimer () {
    let options = {
      type: systemTimer.TIMER_TYPE_REALTIME,
      repeat:false
    };   
    try {
      systemTimer.createTimer(options).then((timerId) => {
        console.info(`Succeeded in creating timer. timerId: ${timerId}`);
      }).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}`);
121
    }
W
wangtong 已提交
122
  }
123
}
124
```
125

W
wangtong 已提交
126
## systemTimer.startTimer
127 128 129

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

130
开启定时器,使用callback异步回调。
131 132 133 134 135

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

**参数:**

136 137 138 139 140
| 参数名      | 类型                   | 必填 | 说明                           |
| ----------- | ---------------------- | ---- | ------------------------------ |
| timer       | number                 | 是   | 定时器的ID。                   |
| triggerTime | number                 | 是   | 定时器的触发时间,单位:毫秒。 |
| callback    | AsyncCallback&lt;void> | 是   | 回调函数。                     |
141 142 143

**示例:**

144
```js
145
export default {
W
wangtong 已提交
146 147 148 149 150 151 152 153 154
  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 {
W
wangtong 已提交
155
      systemTimer.startTimer(timerId, triggerTime, (error) => {
W
wangtong 已提交
156 157 158 159 160
        if (error) {
          console.info(`Failed to start timer. message: ${error.message}, code: ${error.code}`);
          return;
        }
        console.info(`Succeeded in starting timer.`);
161
      });
W
wangtong 已提交
162 163
    } catch(e) {
      console.info(`Failed to start timer. message: ${e.message}, code: ${e.code}`);
164
    }
W
wangtong 已提交
165
  }
166
}
167
```
W
wangtong 已提交
168

W
wangtong 已提交
169
## systemTimer.startTimer
170 171 172

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

173
开启定时器,使用Promise异步回调。
174 175 176 177 178

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

**参数:**

179 180 181 182
| 参数名      | 类型   | 必填 | 说明                           |
| ----------- | ------ | ---- | ------------------------------ |
| timer       | number | 是   | 定时器的ID。                   |
| triggerTime | number | 是   | 定时器的触发时间,单位:毫秒。 |
183

184 185 186 187 188
**返回值:**

| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | 无返回结果的Promise对象。 |
189 190 191

**示例:**

192
```js
193
export default {
W
wangtong 已提交
194 195 196 197
  async systemTimer (){
    let options = {
      type: systemTimer.TIMER_TYPE_REALTIME,
      repeat:false
198
    }
W
wangtong 已提交
199 200 201 202 203 204 205 206 207 208 209 210 211
    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}`);
    } 
  }
212
}
213
```
214

W
wangtong 已提交
215
## systemTimer.stopTimer
216 217 218

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

219
停止定时器,使用callback异步回调。
220 221 222 223 224

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

**参数:**

225 226 227 228
| 参数名   | 类型                   | 必填 | 说明         |
| -------- | ---------------------- | ---- | ------------ |
| timer    | number                 | 是   | 定时器的ID。 |
| callback | AsyncCallback&lt;void> | 是   | 回调函数。   |
229 230 231

**示例:**

232
```js
233
export default {
234
  async systemTimer () {
W
wangtong 已提交
235 236 237 238 239 240 241 242 243
    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 {
244
      systemTimer.stopTimer(timerId, (error) => {
W
wangtong 已提交
245 246 247 248 249
        if (error) {
          console.info(`Failed to stop timer. message: ${error.message}, code: ${error.code}`);
          return;
        }
        console.info(`Succeeded in stopping timer.`);
250
      });
W
wangtong 已提交
251 252 253
    } catch(e) {
      console.info(`Failed to stop timer. message: ${e.message}, code: ${e.code}`);
    }
254
  }
255
}
256
```
257

W
wangtong 已提交
258
## systemTimer.stopTimer
259 260 261

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

262
停止定时器,使用Promise异步回调。
263 264 265 266 267

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

**参数:**

268 269 270 271 272 273 274 275 276
| 参数名 | 类型   | 必填 | 说明         |
| ------ | ------ | ---- | ------------ |
| timer  | number | 是   | 定时器的ID。 |

**返回值:**

| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | 无返回结果的Promise对象。 |
277 278 279

**示例:**

280
```js
281
export default {
282
  async systemTimer (){
W
wangtong 已提交
283 284 285 286 287 288 289 290 291 292 293
    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.`);
294
      }).catch((error) => {
W
wangtong 已提交
295
        console.info(`Failed to stop timer. message: ${error.message}, code: ${error.code}`);
296
      });
W
wangtong 已提交
297 298 299
    } catch(e) {
      console.info(`Failed to stop timer. message: ${e.message}, code: ${e.code}`);
    }
300
  }
301
}
302
```
303

W
wangtong 已提交
304
## systemTimer.destroyTimer
305 306 307

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

308
销毁定时器,使用callback异步回调。
309 310 311 312 313

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

**参数:**

314 315 316 317
| 参数名   | 类型                   | 必填 | 说明         |
| -------- | ---------------------- | ---- | ------------ |
| timer    | number                 | 是   | 定时器的ID。 |
| callback | AsyncCallback&lt;void> | 是   | 回调函数。   |
318 319 320

**示例:**

321
```js
322
export default {
W
wangtong 已提交
323 324 325 326 327 328 329 330 331 332 333 334 335 336 337
  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;
338
        }
W
wangtong 已提交
339 340 341 342
        console.info(`Succeeded in destroying timer.`);
      });
    } catch(e) {
      console.info(`Failed to destroying timer. message: ${e.message}, code: ${e.code}`);
343
    }
W
wangtong 已提交
344
  }
345
}
346
```
347

W
wangtong 已提交
348
## systemTimer.destroyTimer
349 350 351

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

352
销毁定时器,使用Promise异步回调。
353 354 355 356 357

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

**参数:**

358 359 360 361 362 363 364 365 366
| 参数名 | 类型   | 必填 | 说明         |
| ------ | ------ | ---- | ------------ |
| timer  | number | 是   | 定时器的ID。 |

**返回值:**

| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | 无返回结果的Promise对象。 |
367 368 369

**示例:**

370
```js
371
export default {
W
wangtong 已提交
372 373 374 375
  async systemTimer (){
    let options = {
      type: systemTimer.TIMER_TYPE_REALTIME,
      repeat:false
376
    }
W
wangtong 已提交
377 378 379 380 381 382 383 384 385 386 387 388 389 390 391
    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}`);
    }
  }
392
}
393
```