1# @ohos.app.appstartup.startupManager
2
3The startupManager module provides APIs for AppStartup to manage startup tasks. It can be called only in the main thread.
4
5> **NOTE**
6>
7> The initial APIs of this module are supported since API version 12. Newly added APIs will be marked with a superscript to indicate their earliest API version.
8>
9> The APIs of this module can be used only in the stage model.
10
11## Modules to Import
12
13```ts
14import { startupManager }  from '@kit.AbilityKit';
15```
16
17## startupManager.run
18run(startupTasks: Array\<string\>, config?: StartupConfig): Promise\<void\>
19
20Runs AppStartup.
21
22**System capability**: SystemCapability.Ability.AppStartup
23
24**Parameters**
25
26  | Name | Type | Mandatory | Description |
27  | -------- | -------- | -------- | -------- |
28  | startupTasks | Array\<string\> | Yes | Array of class names of the [StartupTask](js-apis-app-appstartup-startupTask.md) API implemented by the startup tasks to be executed. |
29  | config | [StartupConfig](./js-apis-app-appstartup-startupConfig.md) | No | Timeout for starting AppStartup and startup task listener. |
30
31**Return value**
32
33| Type | Description |
34| -------- | -------- |
35| Promise\<void\> | Promise that returns no value. |
36
37**Error codes**
38
39For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md).
40
41  | ID | Error Message |
42  | ------- | -------------------------------- |
43  | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
44  | 16000050 | Internal error. |
45  | 28800001 | Startup task or its dependency not found. |
46  | 28800002  | The startup tasks have circular dependencies. |
47  | 28800003 | An error occurred while running the startup tasks. |
48  | 28800004 | Running startup tasks timeout. |
49
50**Example**
51
52```ts
53import { AbilityConstant, UIAbility, Want, startupManager } from '@kit.AbilityKit';
54import { hilog } from '@kit.PerformanceAnalysisKit';
55import { BusinessError } from '@kit.BasicServicesKit';
56
57export default class EntryAbility extends UIAbility {
58  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
59    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
60    let startParams = ['StartupTask_001'];
61    try {
62      // Manually call the run method.
63      startupManager.run(startParams).then(() => {
64        console.log('StartupTest startupManager run then, startParams = ');
65      }).catch((error: BusinessError) => {
66        console.info("StartupTest promise catch error, error = " + JSON.stringify(error));
67        console.info("StartupTest promise catch error, startParams = "
68          + JSON.stringify(startParams));
69      })
70    } catch (error) {
71      let errMsg = JSON.stringify(error);
72      let errCode: number = error.code;
73      console.log('Startup catch error , errCode= ' + errCode);
74      console.log('Startup catch error ,error= ' + errMsg);
75    }
76  }
77  // ...
78}
79```
80
81## startupManager.removeAllStartupTaskResults
82
83removeAllStartupTaskResults(): void
84
85Removes all startup task results.
86
87**System capability**: SystemCapability.Ability.AppStartup
88
89**Example**
90
91```ts
92import { AbilityConstant, UIAbility, Want, startupManager } from '@kit.AbilityKit';
93import { window } from '@kit.ArkUI';
94import { hilog } from '@kit.PerformanceAnalysisKit';
95
96export default class EntryAbility extends UIAbility {
97  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
98    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
99    startupManager.run(['StartupTask_001']).then(() => {
100      console.info("StartupTask_001 init successful");
101    })
102  }
103
104  onWindowStageCreate(windowStage: window.WindowStage) {
105    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
106    startupManager.removeAllStartupTaskResults(); // Remove all startup task results.
107
108    windowStage.loadContent('pages/Index', (err, data) => {
109      if (err.code) {
110        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
111        return;
112      }
113      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
114    });
115  }
116}
117```
118
119
120## startupManager.getStartupTaskResult
121
122getStartupTaskResult(startupTask: string): Object
123
124Obtains the result of a startup task.
125
126**System capability**: SystemCapability.Ability.AppStartup
127
128**Parameters**
129
130  | Name | Type | Mandatory | Description |
131  | -------- | -------- | -------- | -------- |
132  | startupTask | string | Yes | Class name of the [StartupTask](js-apis-app-appstartup-startupTask.md) API implemented by the startup task. All the startup tasks must implement the [StartupTask](js-apis-app-appstartup-startupTask.md) API. |
133
134**Return value**
135
136  | Type | Description |
137  | -------- | -------- |
138  | Object | Result of the startup task. |
139
140**Error codes**
141
142For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
143
144  | ID | Error Message |
145  | ------- | -------------------------------- |
146  | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
147
148**Example**
149
150```ts
151import { AbilityConstant, UIAbility, Want, startupManager } from '@kit.AbilityKit';
152import { window } from '@kit.ArkUI';
153import { hilog } from '@kit.PerformanceAnalysisKit';
154
155export default class EntryAbility extends UIAbility {
156  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
157    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
158    startupManager.run(['StartupTask_001']).then(() => {
159      console.info("StartupTask_001 init successful");
160    })
161  }
162
163  onWindowStageCreate(windowStage: window.WindowStage) {
164    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
165    let result = startupManager.getStartupTaskResult('StartupTask_001'); // Manually obtain the startup task result.
166    console.info("getStartupTaskResult result = " + result);
167    windowStage.loadContent('pages/Index', (err, data) => {
168      if (err.code) {
169        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
170        return;
171      }
172      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
173    });
174  }
175}
176```
177
178
179## startupManager.isStartupTaskInitialized
180
181isStartupTaskInitialized(startupTask: string): boolean
182
183Checks whether a startup task is initialized.
184
185**System capability**: SystemCapability.Ability.AppStartup
186
187**Parameters**
188
189  | Name | Type | Mandatory | Description |
190  | -------- | -------- | -------- | -------- |
191  | startupTask | string | Yes | Class name of the [StartupTask](js-apis-app-appstartup-startupTask.md) API implemented by the startup task.  |
192
193**Return value**
194
195  | Type | Description |
196  | -------- | -------- |
197  | boolean | **true**: The startup task is initialized.<br>**false**: The startup task is not initialized. |
198
199**Error codes**
200
201For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
202
203  | ID | Error Message |
204  | ------- | -------------------------------- |
205  | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
206
207**Example**
208
209```ts
210import { AbilityConstant, UIAbility, Want, startupManager } from '@kit.AbilityKit';
211import { window } from '@kit.ArkUI';
212import { hilog } from '@kit.PerformanceAnalysisKit';
213
214export default class EntryAbility extends UIAbility {
215  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
216    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
217    startupManager.run(['StartupTask_001']).then(() => {
218      console.info("StartupTask_001 init successful");
219    })
220  }
221
222  onWindowStageCreate(windowStage: window.WindowStage) {
223    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
224    let result = startupManager.isStartupTaskInitialized('StartupTask_001');
225    if (result) {
226      console.info("StartupTask_001 init successful");
227    } else {
228      console.info("StartupTask_001 uninitialized");
229    }
230
231    windowStage.loadContent('pages/Index', (err, data) => {
232      if (err.code) {
233        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
234        return;
235      }
236      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
237    });
238  }
239}
240```
241
242## startupManager.removeStartupTaskResult
243
244removeStartupTaskResult(startupTask: string): void
245
246Removes the initialization result of a startup task.
247
248**System capability**: SystemCapability.Ability.AppStartup
249
250**Parameters**
251
252  | Name | Type | Mandatory | Description |
253  | -------- | -------- | -------- | -------- |
254  | startupTask | string | Yes | Class name of the [StartupTask](js-apis-app-appstartup-startupTask.md) API implemented by the startup task. |
255
256**Error codes**
257
258For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
259
260  | ID | Error Message |
261  | ------- | -------------------------------- |
262  | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
263
264**Example**
265
266```ts
267import { AbilityConstant, UIAbility, Want, startupManager } from '@kit.AbilityKit';
268import { window } from '@kit.ArkUI';
269import { hilog } from '@kit.PerformanceAnalysisKit';
270
271export default class EntryAbility extends UIAbility {
272  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
273    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
274    startupManager.run(['StartupTask_001']).then(() => {
275      console.info("StartupTask_001 init successful");
276    })
277  }
278
279  onWindowStageCreate(windowStage: window.WindowStage) {
280    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
281    startupManager.removeStartupTaskResult('StartupTask_001');
282
283    windowStage.loadContent('pages/Index', (err, data) => {
284      if (err.code) {
285        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
286        return;
287      }
288      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
289    });
290  }
291}
292```
293