1# @ohos.app.appstartup.startupManager
2
3本模块提供应用启动框架管理启动任务的能力,只能在主线程调用。
4
5> **说明:**
6>
7> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9> 本模块接口仅可在Stage模型下使用。
10
11## 导入模块
12
13```ts
14import { startupManager }  from '@kit.AbilityKit';
15```
16
17## startupManager.run
18run(startupTasks: Array\<string\>, config?: StartupConfig): Promise\<void\>
19
20执行启动框架。
21
22**系统能力**:SystemCapability.Ability.AppStartup
23
24**参数:**
25
26  | 参数名 | 类型 | 必填 | 说明 |
27  | -------- | -------- | -------- | -------- |
28  | startupTasks | Array\<string\> | 是 | 表明准备执行的启动任务所实现的[StartupTask](js-apis-app-appstartup-startupTask.md)接口的类名称数组。 |
29  | config | [StartupConfig](./js-apis-app-appstartup-startupConfig.md) | 否 | 启动框架超时时间与启动任务监听器配置。 |
30
31**返回值:**
32
33| 类型 | 说明 |
34| -------- | -------- |
35| Promise\<void\> | Promise对象。无返回结果的Promise对象。 |
36
37**错误码:**
38
39以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
40
41  | 错误码ID | 错误信息 |
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**示例:**:
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      // 手动调用run方法
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
85删除所有启动任务结果。
86
87**系统能力**:SystemCapability.Ability.AppStartup
88
89**示例:**:
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(); // 移除所有启动任务结果
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
124获得指定的启动任务结果。
125
126**系统能力**:SystemCapability.Ability.AppStartup
127
128**参数:**
129
130  | 参数名 | 类型 | 必填 | 说明 |
131  | -------- | -------- | -------- | -------- |
132  | startupTask | string | 是 | 启动任务实现[StartupTask](./js-apis-app-appstartup-startupTask.md)接口的文件名,所有启动任务都需要实现[StartupTask](./js-apis-app-appstartup-startupTask.md)接口的方法。 |
133
134**返回值:**
135
136  | 类型 | 说明 |
137  | -------- | -------- |
138  | Object | 指定启动任务的结果。 |
139
140**错误码:**
141
142以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
143
144  | 错误码ID | 错误信息 |
145  | ------- | -------------------------------- |
146  | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
147
148**示例:**:
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'); // 手动获取启动任务结果
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
183获取指定启动任务是否已初始化。
184
185**系统能力**:SystemCapability.Ability.AppStartup
186
187**参数:**
188
189  | 参数名 | 类型 | 必填 | 说明 |
190  | -------- | -------- | -------- | -------- |
191  | startupTask | string | 是 | 启动任务实现[StartupTask](js-apis-app-appstartup-startupTask.md)接口的类名称。 |
192
193**返回值:**
194
195  | 类型 | 说明 |
196  | -------- | -------- |
197  | boolean | 返回布尔值,true表示该启动任务已执行完成,false表示该启动任务尚未执行完成。 |
198
199**错误码:**
200
201以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
202
203  | 错误码ID | 错误信息 |
204  | ------- | -------------------------------- |
205  | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
206
207**示例:**:
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
246删除指定初始化结果。
247
248**系统能力**:SystemCapability.Ability.AppStartup
249
250**参数:**
251
252  | 参数名 | 类型 | 必填 | 说明 |
253  | -------- | -------- | -------- | -------- |
254  | startupTask | string | 是 | 启动任务所实现[StartupTask](js-apis-app-appstartup-startupTask.md)接口的类名称。 |
255
256**错误码:**
257
258以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
259
260  | 错误码ID | 错误信息 |
261  | ------- | -------------------------------- |
262  | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
263
264**示例:**:
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