js-apis-system-timer.md 11.7 KB
Newer Older
M
MangTsang 已提交
1
# 系统定时器
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 21 22
## 常量

支持创建的定时器类型。

| 名称                | 类型   | 值   | 说明                         |
| ------------------- | ------ | ---- | ---------------------------- |
Z
zhangjunxi 已提交
23
| TIMER_TYPE_REALTIME | number | 1    | 系统启动时间定时器。(定时器启动时间不能晚于当前设置的系统时间)         |
24 25 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

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

42

W
wangtong 已提交
43
## systemTimer.createTimer
44 45 46

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

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

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

**参数:**

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

**示例:**

60
```js
61 62
export default {
    systemTimer () {
63
        let options = {
64 65
            type: systemTimer.TIMER_TYPE_REALTIME,
            repeat: false
66
        };
67 68
        systemTimer.createTimer(options, (error, data) => {
            if (error) {
69
                console.error(`Failed to create timer. Cause:` + JSON.stringify(error));
70 71
                return;
            }
72
            console.log(`Succeeded in creating timer. Data:` + JSON.stringify(data));
73 74 75
        });
    }
}
76
```
77

W
wangtong 已提交
78
## systemTimer.createTimer
79 80 81

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

82
创建定时器,使用Promise异步回调。
83 84 85 86 87

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

**参数:**

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

**返回值:**

94 95 96
| 类型                  | 说明                          |
| --------------------- | ----------------------------- |
| Promise&lt;number&gt; | Promise对象,返回定时器的ID。 |
97 98 99

**示例:**

100
```js
101 102
export default {
    systemTimer () {
103
        let options = {
104 105
            type: systemTimer.TIMER_TYPE_REALTIME,
            repeat:false
106
        };
107
        systemTimer.createTimer(options).then((data) => {
108
            console.log(`Succeeded in creating timer. Data:` + JSON.stringify(data));
109
        }).catch((error) => {
110
            console.error(`Failed to create timer. Cause:` + JSON.stringify(error));
111 112 113
        });
    }
}
114
```
115

W
wangtong 已提交
116
## systemTimer.startTimer
117 118 119

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

120
开始定时器,使用callback异步回调。
121 122 123 124 125

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

**参数:**

126 127 128 129 130
| 参数名      | 类型                   | 必填 | 说明                           |
| ----------- | ---------------------- | ---- | ------------------------------ |
| timer       | number                 | 是   | 定时器的ID。                   |
| triggerTime | number                 | 是   | 定时器的触发时间,单位:毫秒。 |
| callback    | AsyncCallback&lt;void> | 是   | 回调函数。                     |
131 132 133

**示例:**

134
```js
135
export default {
W
wangtong 已提交
136
    async systemTimer () {
137
        let options = {
138 139 140
            type: systemTimer.TIMER_TYPE_REALTIME,
            repeat:false
        }
141 142 143 144 145 146 147 148 149 150
      let timerId = await systemTimer.createTimer(options)
  	  let triggerTime = new Date().getTime()
      triggerTime += 3000
      systemTimer.startTimer(timerId, triggerTime, (error, data) => {
          if (error) {
              console.error(`Failed to start timer. Cause:` + JSON.stringify(error));
              return;
          }
          console.log(`Succeeded in startting timer. Data:` + JSON.stringify(data));
      });
151 152
    }
}
153
```
W
wangtong 已提交
154

W
wangtong 已提交
155
## systemTimer.startTimer
156 157 158

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

159
开始定时器,使用Promise异步回调。
160 161 162 163 164

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

**参数:**

165 166 167 168
| 参数名      | 类型   | 必填 | 说明                           |
| ----------- | ------ | ---- | ------------------------------ |
| timer       | number | 是   | 定时器的ID。                   |
| triggerTime | number | 是   | 定时器的触发时间,单位:毫秒。 |
169

170 171 172 173 174
**返回值:**

| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | 无返回结果的Promise对象。 |
175 176 177

**示例:**

178
```js
179
export default {
W
wangtong 已提交
180
    async systemTimer (){
181
        let options = {
182 183 184
            type: systemTimer.TIMER_TYPE_REALTIME,
            repeat:false
        }
W
wangtong 已提交
185
        let timerId = await systemTimer.createTimer(options)
186
        let triggerTime = new Date().getTime()
187 188
        triggerTime += 3000
        systemTimer.startTimer(timerId, triggerTime).then((data) => {
189
            console.log(`Succeeded in startting timer. Data:` + JSON.stringify(data));
190
        }).catch((error) => {
191
            console.error(`Failed to start timer. Cause:` + JSON.stringify(error));
192 193 194
        });
    }
}
195
```
196

W
wangtong 已提交
197
## systemTimer.stopTimer
198 199 200

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

201
停止定时器,使用callback异步回调。
202 203 204 205 206

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

**参数:**

207 208 209 210
| 参数名   | 类型                   | 必填 | 说明         |
| -------- | ---------------------- | ---- | ------------ |
| timer    | number                 | 是   | 定时器的ID。 |
| callback | AsyncCallback&lt;void> | 是   | 回调函数。   |
211 212 213

**示例:**

214
```js
215
export default {
216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
  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, (error) => {
          if (error) {
              console.error(`Failed to stop timer. Cause:` + JSON.stringify(error));
              return;
          }
      });
  }
232
}
233
```
234

W
wangtong 已提交
235
## systemTimer.stopTimer
236 237 238

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

239
停止定时器,使用Promise异步回调。
240 241 242 243 244

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

**参数:**

245 246 247 248 249 250 251 252 253
| 参数名 | 类型   | 必填 | 说明         |
| ------ | ------ | ---- | ------------ |
| timer  | number | 是   | 定时器的ID。 |

**返回值:**

| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | 无返回结果的Promise对象。 |
254 255 256

**示例:**

257
```js
258
export default {
259 260 261 262 263 264 265 266 267 268 269 270 271 272 273
  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).then((data) => {
          console.log(`Succeeded in stopping timer. Data:` + JSON.stringify(data));
      }).catch((error) => {
          console.error(`Failed to stop timer. Cause:` + JSON.stringify(error));
      });
  }
274
}
275
```
276

W
wangtong 已提交
277
## systemTimer.destroyTimer
278 279 280

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

281
销毁定时器,使用callback异步回调。
282 283 284 285 286

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

**参数:**

287 288 289 290
| 参数名   | 类型                   | 必填 | 说明         |
| -------- | ---------------------- | ---- | ------------ |
| timer    | number                 | 是   | 定时器的ID。 |
| callback | AsyncCallback&lt;void> | 是   | 回调函数。   |
291 292 293

**示例:**

294
```js
295
export default {
W
wangtong 已提交
296
    async systemTimer () {
297
        let options = {
298 299 300
            type: systemTimer.TIMER_TYPE_REALTIME,
            repeat:false
        }
W
wangtong 已提交
301
        let timerId = await systemTimer.createTimer(options)
302
        let triggerTime = new Date().getTime()
303 304
        triggerTime += 3000
        systemTimer.startTimer(timerId, triggerTime)
305
        systemTimer.stopTimer(timerId)
W
wangtong 已提交
306
        systemTimer.destroyTimer(timerId, (error) => {
307
            if (error) {
308
                console.error(`Failed to destroy timer. Cause:` + JSON.stringify(error));
309 310 311 312 313
                return;
            }
        });
    }
}
314
```
315

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

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

320
销毁定时器,使用Promise异步回调。
321 322 323 324 325

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

**参数:**

326 327 328 329 330 331 332 333 334
| 参数名 | 类型   | 必填 | 说明         |
| ------ | ------ | ---- | ------------ |
| timer  | number | 是   | 定时器的ID。 |

**返回值:**

| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | 无返回结果的Promise对象。 |
335 336 337

**示例:**

338
```js
339
export default {
W
wangtong 已提交
340
    async systemTimer (){
341
        let options = {
342 343 344
            type: systemTimer.TIMER_TYPE_REALTIME,
            repeat:false
        }
W
wangtong 已提交
345
        let timerId = await systemTimer.createTimer(options)
346
        let triggerTime = new Date().getTime()
347 348
        triggerTime += 3000
        systemTimer.startTimer(timerId, triggerTime)
349
        systemTimer.stopTimer(timerId)
350
        systemTimer.destroyTimer(timerId, 10000).then((data) => {
351
            console.log(`Succeeded in destroying timer. Data:` + JSON.stringify(data));
352
        }).catch((error) => {
353
            console.error(`Failed to destroy timer. Cause:` + JSON.stringify(error));
354 355 356
        });
    }
}
357
```