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

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

 ## TimerOptions

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

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

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

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 64
export default {
    systemTimer () {
65
        let options = {
66 67
            type: systemTimer.TIMER_TYPE_REALTIME,
            repeat: false
68
        };
69 70
        systemTimer.createTimer(options, (error, data) => {
            if (error) {
71
                console.error(`Failed to create timer. Cause:` + JSON.stringify(error));
72 73
                return;
            }
74
            console.log(`Succeeded in creating timer. Data:` + JSON.stringify(data));
75 76 77
        });
    }
}
78
```
79

W
wangtong 已提交
80
## systemTimer.createTimer
81 82 83

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

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

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

**参数:**

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

**返回值:**

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

**示例:**

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

W
wangtong 已提交
118
## systemTimer.startTimer
119 120 121

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

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

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

**参数:**

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

**示例:**

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

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

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

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

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

**参数:**

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

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

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

**示例:**

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

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

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

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

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

**参数:**

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

**示例:**

215
```js
216
export default {
217 218 219 220 221 222
  async systemTimer () {
      let options = {
          type: systemTimer.TIMER_TYPE_REALTIME,
          repeat:false
      }
      let timerId = await systemTimer.createTimer(options)
W
wangtong 已提交
223
      let triggerTime = new Date().getTime()
224 225 226 227 228 229 230 231 232
      triggerTime += 3000
      systemTimer.startTimer(timerId, triggerTime)
      systemTimer.stopTimer(timerId, (error) => {
          if (error) {
              console.error(`Failed to stop timer. Cause:` + JSON.stringify(error));
              return;
          }
      });
  }
233
}
234
```
235

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

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

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

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

**参数:**

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

**返回值:**

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

**示例:**

258
```js
259
export default {
260 261 262 263 264 265
  async systemTimer (){
      let options = {
          type: systemTimer.TIMER_TYPE_REALTIME,
          repeat:false
      }
      let timerId = await systemTimer.createTimer(options)
W
wangtong 已提交
266
  	  let triggerTime = new Date().getTime()
267 268 269 270 271 272 273 274
      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));
      });
  }
275
}
276
```
277

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

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

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

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

**参数:**

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

**示例:**

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

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

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

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

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

**参数:**

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

**返回值:**

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

**示例:**

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