• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.systemTimer (系统定时器)(系统接口)
2
3本模块主要由系统定时器功能组成。开发者可以使用定时功能实现定时服务,如闹钟等。
4
5> **说明:**
6>
7> - 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8> - 本模块接口为系统接口。
9
10## 导入模块
11
12
13```ts
14import systemTimer from '@ohos.systemTimer';
15```
16
17## 常量
18
19支持创建的定时器类型。
20
21**系统能力:** SystemCapability.MiscServices.Time
22
23| 名称                | 类型   | 值   | 说明                         |
24| ------------------- | ------ | ---- | ---------------------------- |
25| TIMER_TYPE_REALTIME | number | 1    | 系统启动时间定时器。(定时器启动时间不能晚于当前设置的系统时间)         |
26| TIMER_TYPE_WAKEUP   | number | 2    | 唤醒定时器。                 |
27| TIMER_TYPE_EXACT    | number | 4    | 精准定时器。                 |
28| TIMER_TYPE_IDLE     | number | 8    | IDLE模式定时器(暂不支持)。 |
29
30 ## TimerOptions
31
32创建系统定时器的初始化选项。
33
34**系统能力:** SystemCapability.MiscServices.Time
35
36| 名称      | 类型                                          | 必填 | 说明                                                         |
37| --------- | --------------------------------------------- | ---- | ------------------------------------------------------------ |
38| type      | number                                        | 是   | 定时器类型。<br>取值为1,表示为系统启动时间定时器(定时器启动时间不能晚于当前设置的系统时间) ;<br>取值为2,表示为唤醒定时器;<br>取值为4,表示为精准定时器;<br>取值为8,表示为IDLE模式定时器(暂不支持)。 |
39| repeat    | boolean                                       | 是   | 是否为循环定时器。<br>true为循环定时器,false为单次定时器。                        |
40| interval  | number                                        | 否   | 定时器时间间隔。<br>如果是循环定时器,interval值应大于5000毫秒;单次定时器interval值为0。 |
41| wantAgent | WantAgent | 否   | 设置通知的WantAgent,定时器到期后通知。(支持拉起应用MainAbility,暂不支持拉起ServiceAbility。) |
42| callback  | number                                        | 是   | 以回调函数的形式返回定时器的ID。                             |
43
44
45## systemTimer.createTimer
46
47createTimer(options: TimerOptions, callback: AsyncCallback&lt;number&gt;): void
48
49创建定时器,使用callback异步回调。
50
51**系统能力:** SystemCapability.MiscServices.Time
52
53**参数:**
54
55| 参数名   | 类型                          | 必填 | 说明                                                         |
56| -------- | ----------------------------- | ---- | ------------------------------------------------------------ |
57| options  | [TimerOptions](#timeroptions) | 是   | 创建系统定时器的初始化选项,包括定时器类型、是否循环触发、间隔时间、WantAgent通知机制等。 |
58| callback | AsyncCallback&lt;number>      | 是   | 回调函数,返回定时器的ID。                                   |
59
60**示例:**
61
62```ts
63import { BusinessError } from '@ohos.base';
64
65let options: systemTimer.TimerOptions = {
66  type: systemTimer.TIMER_TYPE_REALTIME,
67  repeat: false
68};
69try {
70  systemTimer.createTimer(options, (error: BusinessError, timerId: Number) => {
71    if (error) {
72      console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
73      return;
74    }
75    console.info(`Succeeded in creating timer. timerId: ${timerId}`);
76  });
77} catch(e) {
78  let error = e as BusinessError;
79  console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
80}
81```
82
83## systemTimer.createTimer
84
85createTimer(options: TimerOptions): Promise&lt;number&gt;
86
87创建定时器,使用Promise异步回调。
88
89
90**系统能力:** SystemCapability.MiscServices.Time
91
92**参数:**
93
94| 参数名  | 类型                          | 必填 | 说明                                                         |
95| ------- | ----------------------------- | ---- | ------------------------------------------------------------ |
96| options | [TimerOptions](#timeroptions) | 是   | 创建系统定时器的初始化选项,包括定时器类型、是否循环触发、间隔时间、WantAgent通知机制等。 |
97
98**返回值:**
99
100| 类型                  | 说明                          |
101| --------------------- | ----------------------------- |
102| Promise&lt;number&gt; | Promise对象,返回定时器的ID。 |
103
104**示例:**
105
106```ts
107import { BusinessError } from '@ohos.base';
108
109let options: systemTimer.TimerOptions = {
110  type: systemTimer.TIMER_TYPE_REALTIME,
111  repeat:false
112};
113try {
114  systemTimer.createTimer(options).then((timerId: Number) => {
115    console.info(`Succeeded in creating timer. timerId: ${timerId}`);
116  }).catch((error: BusinessError) => {
117    console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
118  });
119} catch(e) {
120  let error = e as BusinessError;
121  console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
122}
123```
124
125## systemTimer.startTimer
126
127startTimer(timer: number, triggerTime: number, callback: AsyncCallback&lt;void&gt;): void
128
129开启定时器,使用callback异步回调。
130
131**系统能力:** SystemCapability.MiscServices.Time
132
133**参数:**
134
135| 参数名      | 类型                   | 必填 | 说明                           |
136| ----------- | ---------------------- | ---- | ------------------------------ |
137| timer       | number                 | 是   | 定时器的ID。                   |
138| triggerTime | number                 | 是   | 定时器的触发时间,单位:毫秒。 |
139| callback    | AsyncCallback&lt;void> | 是   | 回调函数。                     |
140
141**示例:**
142
143```ts
144import { BusinessError } from '@ohos.base';
145
146let options: systemTimer.TimerOptions = {
147  type: systemTimer.TIMER_TYPE_REALTIME,
148  repeat:false
149}
150let triggerTime = new Date().getTime();
151triggerTime += 3000;
152
153try {
154  systemTimer.createTimer(options).then((timerId: number) => {
155    systemTimer.startTimer(timerId, triggerTime, (error: BusinessError) => {
156      if (error) {
157        console.info(`Failed to start timer. message: ${error.message}, code: ${error.code}`);
158        return;
159      }
160      console.info(`Succeeded in starting timer.`);
161    });
162    console.info(`Succeeded in creating timer. timerId: ${timerId}`);
163  }).catch((error: BusinessError) => {
164    console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
165  });
166} catch(e) {
167  let error = e as BusinessError;
168  console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
169}
170```
171
172## systemTimer.startTimer
173
174startTimer(timer: number, triggerTime: number): Promise&lt;void&gt;
175
176开启定时器,使用Promise异步回调。
177
178**系统能力:** SystemCapability.MiscServices.Time
179
180**参数:**
181
182| 参数名      | 类型   | 必填 | 说明                           |
183| ----------- | ------ | ---- | ------------------------------ |
184| timer       | number | 是   | 定时器的ID。                   |
185| triggerTime | number | 是   | 定时器的触发时间,单位:毫秒。 |
186
187**返回值:**
188
189| 类型           | 说明                      |
190| -------------- | ------------------------- |
191| Promise\<void> | 无返回结果的Promise对象。 |
192
193**示例:**
194
195```ts
196import { BusinessError } from '@ohos.base';
197
198let options: systemTimer.TimerOptions = {
199  type: systemTimer.TIMER_TYPE_REALTIME,
200  repeat:false
201}
202let triggerTime = new Date().getTime();
203triggerTime += 3000;
204
205try {
206  systemTimer.createTimer(options).then((timerId: number) => {
207    systemTimer.startTimer(timerId, triggerTime).then(() => {
208      console.info(`Succeeded in starting timer.`);
209    }).catch((error: BusinessError) => {
210      console.info(`Failed to start timer. message: ${error.message}, code: ${error.code}`);
211    });
212    console.info(`Succeeded in creating timer. timerId: ${timerId}`);
213  }).catch((error: BusinessError) => {
214    console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
215  });
216} catch(e) {
217  let error = e as BusinessError;
218  console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
219}
220```
221
222## systemTimer.stopTimer
223
224stopTimer(timer: number, callback: AsyncCallback&lt;void&gt;): void
225
226停止定时器,使用callback异步回调。
227
228**系统能力:** SystemCapability.MiscServices.Time
229
230**参数:**
231
232| 参数名   | 类型                   | 必填 | 说明         |
233| -------- | ---------------------- | ---- | ------------ |
234| timer    | number                 | 是   | 定时器的ID。 |
235| callback | AsyncCallback&lt;void> | 是   | 回调函数。   |
236
237**示例:**
238
239```ts
240import { BusinessError } from '@ohos.base';
241
242let options: systemTimer.TimerOptions = {
243  type: systemTimer.TIMER_TYPE_REALTIME,
244  repeat:false
245}
246let triggerTime = new Date().getTime();
247triggerTime += 3000;
248
249try {
250  systemTimer.createTimer(options).then((timerId: number) => {
251    systemTimer.startTimer(timerId, triggerTime);
252    systemTimer.stopTimer(timerId, (error: BusinessError) => {
253      if (error) {
254        console.info(`Failed to stop timer. message: ${error.message}, code: ${error.code}`);
255        return;
256      }
257    console.info(`Succeeded in stopping timer.`);
258    });
259    console.info(`Succeeded in creating timer. timerId: ${timerId}`);
260  }).catch((error: BusinessError) => {
261    console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
262  });
263} catch(e) {
264  let error = e as BusinessError;
265  console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
266}
267```
268
269## systemTimer.stopTimer
270
271stopTimer(timer: number): Promise&lt;void&gt;
272
273停止定时器,使用Promise异步回调。
274
275**系统能力:** SystemCapability.MiscServices.Time
276
277**参数:**
278
279| 参数名 | 类型   | 必填 | 说明         |
280| ------ | ------ | ---- | ------------ |
281| timer  | number | 是   | 定时器的ID。 |
282
283**返回值:**
284
285| 类型           | 说明                      |
286| -------------- | ------------------------- |
287| Promise\<void> | 无返回结果的Promise对象。 |
288
289**示例:**
290
291```ts
292import { BusinessError } from '@ohos.base';
293
294let options: systemTimer.TimerOptions = {
295  type: systemTimer.TIMER_TYPE_REALTIME,
296  repeat:false
297}
298let triggerTime = new Date().getTime();
299triggerTime += 3000;
300
301try {
302  systemTimer.createTimer(options).then((timerId: number) => {
303    systemTimer.startTimer(timerId, triggerTime);
304    systemTimer.stopTimer(timerId).then(() => {
305      console.info(`Succeeded in stopping timer.`);
306    }).catch((error: BusinessError) => {
307      console.info(`Failed to stop timer. message: ${error.message}, code: ${error.code}`);
308    });
309    console.info(`Succeeded in creating timer. timerId: ${timerId}`);
310  }).catch((error: BusinessError) => {
311    console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
312  });
313} catch(e) {
314  let error = e as BusinessError;
315  console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
316}
317```
318
319## systemTimer.destroyTimer
320
321destroyTimer(timer: number, callback: AsyncCallback&lt;void&gt;): void
322
323销毁定时器,使用callback异步回调。
324
325**系统能力:** SystemCapability.MiscServices.Time
326
327**参数:**
328
329| 参数名   | 类型                   | 必填 | 说明         |
330| -------- | ---------------------- | ---- | ------------ |
331| timer    | number                 | 是   | 定时器的ID。 |
332| callback | AsyncCallback&lt;void> | 是   | 回调函数。   |
333
334**示例:**
335
336```ts
337import { BusinessError } from '@ohos.base';
338
339let options: systemTimer.TimerOptions = {
340  type: systemTimer.TIMER_TYPE_REALTIME,
341  repeat:false
342}
343let triggerTime = new Date().getTime();
344triggerTime += 3000;
345
346try {
347  systemTimer.createTimer(options).then((timerId: number) => {
348    systemTimer.startTimer(timerId, triggerTime);
349    systemTimer.stopTimer(timerId);
350    systemTimer.destroyTimer(timerId, (error: BusinessError) => {
351      if (error) {
352        console.info(`Failed to destroy timer. message: ${error.message}, code: ${error.code}`);
353        return;
354      }
355    console.info(`Succeeded in destroying timer.`);
356    });
357    console.info(`Succeeded in creating timer. timerId: ${timerId}`);
358  }).catch((error: BusinessError) => {
359    console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
360  });
361} catch(e) {
362  let error = e as BusinessError;
363  console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
364}
365```
366
367## systemTimer.destroyTimer
368
369destroyTimer(timer: number): Promise&lt;void&gt;
370
371销毁定时器,使用Promise异步回调。
372
373**系统能力:** SystemCapability.MiscServices.Time
374
375**参数:**
376
377| 参数名 | 类型   | 必填 | 说明         |
378| ------ | ------ | ---- | ------------ |
379| timer  | number | 是   | 定时器的ID。 |
380
381**返回值:**
382
383| 类型           | 说明                      |
384| -------------- | ------------------------- |
385| Promise\<void> | 无返回结果的Promise对象。 |
386
387**示例:**
388
389```ts
390import { BusinessError } from '@ohos.base';
391
392let options: systemTimer.TimerOptions = {
393  type: systemTimer.TIMER_TYPE_REALTIME,
394  repeat:false
395}
396let triggerTime = new Date().getTime();
397triggerTime += 3000;
398
399try {
400  systemTimer.createTimer(options).then((timerId: number) => {
401    systemTimer.startTimer(timerId, triggerTime);
402    systemTimer.stopTimer(timerId);
403    systemTimer.destroyTimer(timerId).then(() => {
404      console.info(`Succeeded in destroying timer.`);
405    }).catch((error: BusinessError) => {
406      console.info(`Failed to destroy timer. message: ${error.message}, code: ${error.code}`);
407    });
408    console.info(`Succeeded in creating timer. timerId: ${timerId}`);
409  }).catch((error: BusinessError) => {
410    console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
411  });
412} catch(e) {
413  let error = e as BusinessError;
414  console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`);
415}
416```