1e41f4b71Sopenharmony_ci# @ohos.app.appstartup.startupManager
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci本模块提供应用启动框架管理启动任务的能力,只能在主线程调用。
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci> **说明:**
6e41f4b71Sopenharmony_ci>
7e41f4b71Sopenharmony_ci> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8e41f4b71Sopenharmony_ci>
9e41f4b71Sopenharmony_ci> 本模块接口仅可在Stage模型下使用。
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci## 导入模块
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci```ts
14e41f4b71Sopenharmony_ciimport { startupManager }  from '@kit.AbilityKit';
15e41f4b71Sopenharmony_ci```
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci## startupManager.run
18e41f4b71Sopenharmony_cirun(startupTasks: Array\<string\>, config?: StartupConfig): Promise\<void\>
19e41f4b71Sopenharmony_ci
20e41f4b71Sopenharmony_ci执行启动框架。
21e41f4b71Sopenharmony_ci
22e41f4b71Sopenharmony_ci**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AppStartup
23e41f4b71Sopenharmony_ci
24e41f4b71Sopenharmony_ci**参数:**
25e41f4b71Sopenharmony_ci
26e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
27e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
28e41f4b71Sopenharmony_ci  | startupTasks | Array\<string\> | 是 | 表明准备执行的启动任务所实现的[StartupTask](js-apis-app-appstartup-startupTask.md)接口的类名称数组。 |
29e41f4b71Sopenharmony_ci  | config | [StartupConfig](./js-apis-app-appstartup-startupConfig.md) | 否 | 启动框架超时时间与启动任务监听器配置。 |
30e41f4b71Sopenharmony_ci
31e41f4b71Sopenharmony_ci**返回值:**
32e41f4b71Sopenharmony_ci
33e41f4b71Sopenharmony_ci| 类型 | 说明 |
34e41f4b71Sopenharmony_ci| -------- | -------- |
35e41f4b71Sopenharmony_ci| Promise\<void\> | Promise对象。无返回结果的Promise对象。 |
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_ci**错误码:**
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
42e41f4b71Sopenharmony_ci  | ------- | -------------------------------- |
43e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
44e41f4b71Sopenharmony_ci  | 16000050 | Internal error. |
45e41f4b71Sopenharmony_ci  | 28800001 | Startup task or its dependency not found. |
46e41f4b71Sopenharmony_ci  | 28800002  | The startup tasks have circular dependencies. |
47e41f4b71Sopenharmony_ci  | 28800003 | An error occurred while running the startup tasks. |
48e41f4b71Sopenharmony_ci  | 28800004 | Running startup tasks timeout. |
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_ci**示例:**:
51e41f4b71Sopenharmony_ci
52e41f4b71Sopenharmony_ci```ts
53e41f4b71Sopenharmony_ciimport { AbilityConstant, UIAbility, Want, startupManager } from '@kit.AbilityKit';
54e41f4b71Sopenharmony_ciimport { hilog } from '@kit.PerformanceAnalysisKit';
55e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
56e41f4b71Sopenharmony_ci
57e41f4b71Sopenharmony_ciexport default class EntryAbility extends UIAbility {
58e41f4b71Sopenharmony_ci  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
59e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
60e41f4b71Sopenharmony_ci    let startParams = ['StartupTask_001'];
61e41f4b71Sopenharmony_ci    try {
62e41f4b71Sopenharmony_ci      // 手动调用run方法
63e41f4b71Sopenharmony_ci      startupManager.run(startParams).then(() => {
64e41f4b71Sopenharmony_ci        console.log('StartupTest startupManager run then, startParams = ');
65e41f4b71Sopenharmony_ci      }).catch((error: BusinessError) => {
66e41f4b71Sopenharmony_ci        console.info("StartupTest promise catch error, error = " + JSON.stringify(error));
67e41f4b71Sopenharmony_ci        console.info("StartupTest promise catch error, startParams = "
68e41f4b71Sopenharmony_ci          + JSON.stringify(startParams));
69e41f4b71Sopenharmony_ci      })
70e41f4b71Sopenharmony_ci    } catch (error) {
71e41f4b71Sopenharmony_ci      let errMsg = JSON.stringify(error);
72e41f4b71Sopenharmony_ci      let errCode: number = error.code;
73e41f4b71Sopenharmony_ci      console.log('Startup catch error , errCode= ' + errCode);
74e41f4b71Sopenharmony_ci      console.log('Startup catch error ,error= ' + errMsg);
75e41f4b71Sopenharmony_ci    }
76e41f4b71Sopenharmony_ci  }
77e41f4b71Sopenharmony_ci  // ...
78e41f4b71Sopenharmony_ci}
79e41f4b71Sopenharmony_ci```
80e41f4b71Sopenharmony_ci
81e41f4b71Sopenharmony_ci## startupManager.removeAllStartupTaskResults
82e41f4b71Sopenharmony_ci
83e41f4b71Sopenharmony_ciremoveAllStartupTaskResults(): void
84e41f4b71Sopenharmony_ci
85e41f4b71Sopenharmony_ci删除所有启动任务结果。
86e41f4b71Sopenharmony_ci
87e41f4b71Sopenharmony_ci**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AppStartup
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci**示例:**:
90e41f4b71Sopenharmony_ci
91e41f4b71Sopenharmony_ci```ts
92e41f4b71Sopenharmony_ciimport { AbilityConstant, UIAbility, Want, startupManager } from '@kit.AbilityKit';
93e41f4b71Sopenharmony_ciimport { window } from '@kit.ArkUI';
94e41f4b71Sopenharmony_ciimport { hilog } from '@kit.PerformanceAnalysisKit';
95e41f4b71Sopenharmony_ci
96e41f4b71Sopenharmony_ciexport default class EntryAbility extends UIAbility {
97e41f4b71Sopenharmony_ci  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
98e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
99e41f4b71Sopenharmony_ci    startupManager.run(['StartupTask_001']).then(() => {
100e41f4b71Sopenharmony_ci      console.info("StartupTask_001 init successful");
101e41f4b71Sopenharmony_ci    })
102e41f4b71Sopenharmony_ci  }
103e41f4b71Sopenharmony_ci
104e41f4b71Sopenharmony_ci  onWindowStageCreate(windowStage: window.WindowStage) {
105e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
106e41f4b71Sopenharmony_ci    startupManager.removeAllStartupTaskResults(); // 移除所有启动任务结果
107e41f4b71Sopenharmony_ci
108e41f4b71Sopenharmony_ci    windowStage.loadContent('pages/Index', (err, data) => {
109e41f4b71Sopenharmony_ci      if (err.code) {
110e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
111e41f4b71Sopenharmony_ci        return;
112e41f4b71Sopenharmony_ci      }
113e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
114e41f4b71Sopenharmony_ci    });
115e41f4b71Sopenharmony_ci  }
116e41f4b71Sopenharmony_ci}
117e41f4b71Sopenharmony_ci```
118e41f4b71Sopenharmony_ci
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ci## startupManager.getStartupTaskResult
121e41f4b71Sopenharmony_ci
122e41f4b71Sopenharmony_cigetStartupTaskResult(startupTask: string): Object
123e41f4b71Sopenharmony_ci
124e41f4b71Sopenharmony_ci获得指定的启动任务结果。
125e41f4b71Sopenharmony_ci
126e41f4b71Sopenharmony_ci**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AppStartup
127e41f4b71Sopenharmony_ci
128e41f4b71Sopenharmony_ci**参数:**
129e41f4b71Sopenharmony_ci
130e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
131e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
132e41f4b71Sopenharmony_ci  | startupTask | string | 是 | 启动任务实现[StartupTask](./js-apis-app-appstartup-startupTask.md)接口的文件名,所有启动任务都需要实现[StartupTask](./js-apis-app-appstartup-startupTask.md)接口的方法。 |
133e41f4b71Sopenharmony_ci
134e41f4b71Sopenharmony_ci**返回值:**
135e41f4b71Sopenharmony_ci
136e41f4b71Sopenharmony_ci  | 类型 | 说明 |
137e41f4b71Sopenharmony_ci  | -------- | -------- |
138e41f4b71Sopenharmony_ci  | Object | 指定启动任务的结果。 |
139e41f4b71Sopenharmony_ci
140e41f4b71Sopenharmony_ci**错误码:**
141e41f4b71Sopenharmony_ci
142e41f4b71Sopenharmony_ci以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
143e41f4b71Sopenharmony_ci
144e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
145e41f4b71Sopenharmony_ci  | ------- | -------------------------------- |
146e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
147e41f4b71Sopenharmony_ci
148e41f4b71Sopenharmony_ci**示例:**:
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ci```ts
151e41f4b71Sopenharmony_ciimport { AbilityConstant, UIAbility, Want, startupManager } from '@kit.AbilityKit';
152e41f4b71Sopenharmony_ciimport { window } from '@kit.ArkUI';
153e41f4b71Sopenharmony_ciimport { hilog } from '@kit.PerformanceAnalysisKit';
154e41f4b71Sopenharmony_ci
155e41f4b71Sopenharmony_ciexport default class EntryAbility extends UIAbility {
156e41f4b71Sopenharmony_ci  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
157e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
158e41f4b71Sopenharmony_ci    startupManager.run(['StartupTask_001']).then(() => {
159e41f4b71Sopenharmony_ci      console.info("StartupTask_001 init successful");
160e41f4b71Sopenharmony_ci    })
161e41f4b71Sopenharmony_ci  }
162e41f4b71Sopenharmony_ci
163e41f4b71Sopenharmony_ci  onWindowStageCreate(windowStage: window.WindowStage) {
164e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
165e41f4b71Sopenharmony_ci    let result = startupManager.getStartupTaskResult('StartupTask_001'); // 手动获取启动任务结果
166e41f4b71Sopenharmony_ci    console.info("getStartupTaskResult result = " + result);
167e41f4b71Sopenharmony_ci    windowStage.loadContent('pages/Index', (err, data) => {
168e41f4b71Sopenharmony_ci      if (err.code) {
169e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
170e41f4b71Sopenharmony_ci        return;
171e41f4b71Sopenharmony_ci      }
172e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
173e41f4b71Sopenharmony_ci    });
174e41f4b71Sopenharmony_ci  }
175e41f4b71Sopenharmony_ci}
176e41f4b71Sopenharmony_ci```
177e41f4b71Sopenharmony_ci
178e41f4b71Sopenharmony_ci
179e41f4b71Sopenharmony_ci## startupManager.isStartupTaskInitialized
180e41f4b71Sopenharmony_ci
181e41f4b71Sopenharmony_ciisStartupTaskInitialized(startupTask: string): boolean
182e41f4b71Sopenharmony_ci
183e41f4b71Sopenharmony_ci获取指定启动任务是否已初始化。
184e41f4b71Sopenharmony_ci
185e41f4b71Sopenharmony_ci**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AppStartup
186e41f4b71Sopenharmony_ci
187e41f4b71Sopenharmony_ci**参数:**
188e41f4b71Sopenharmony_ci
189e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
190e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
191e41f4b71Sopenharmony_ci  | startupTask | string | 是 | 启动任务实现[StartupTask](js-apis-app-appstartup-startupTask.md)接口的类名称。 |
192e41f4b71Sopenharmony_ci
193e41f4b71Sopenharmony_ci**返回值:**
194e41f4b71Sopenharmony_ci
195e41f4b71Sopenharmony_ci  | 类型 | 说明 |
196e41f4b71Sopenharmony_ci  | -------- | -------- |
197e41f4b71Sopenharmony_ci  | boolean | 返回布尔值,true表示该启动任务已执行完成,false表示该启动任务尚未执行完成。 |
198e41f4b71Sopenharmony_ci
199e41f4b71Sopenharmony_ci**错误码:**
200e41f4b71Sopenharmony_ci
201e41f4b71Sopenharmony_ci以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
202e41f4b71Sopenharmony_ci
203e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
204e41f4b71Sopenharmony_ci  | ------- | -------------------------------- |
205e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
206e41f4b71Sopenharmony_ci
207e41f4b71Sopenharmony_ci**示例:**:
208e41f4b71Sopenharmony_ci
209e41f4b71Sopenharmony_ci```ts
210e41f4b71Sopenharmony_ciimport { AbilityConstant, UIAbility, Want, startupManager } from '@kit.AbilityKit';
211e41f4b71Sopenharmony_ciimport { window } from '@kit.ArkUI';
212e41f4b71Sopenharmony_ciimport { hilog } from '@kit.PerformanceAnalysisKit';
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ciexport default class EntryAbility extends UIAbility {
215e41f4b71Sopenharmony_ci  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
216e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
217e41f4b71Sopenharmony_ci    startupManager.run(['StartupTask_001']).then(() => {
218e41f4b71Sopenharmony_ci      console.info("StartupTask_001 init successful");
219e41f4b71Sopenharmony_ci    })
220e41f4b71Sopenharmony_ci  }
221e41f4b71Sopenharmony_ci
222e41f4b71Sopenharmony_ci  onWindowStageCreate(windowStage: window.WindowStage) {
223e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
224e41f4b71Sopenharmony_ci    let result = startupManager.isStartupTaskInitialized('StartupTask_001');
225e41f4b71Sopenharmony_ci    if (result) {
226e41f4b71Sopenharmony_ci      console.info("StartupTask_001 init successful");
227e41f4b71Sopenharmony_ci    } else {
228e41f4b71Sopenharmony_ci      console.info("StartupTask_001 uninitialized");
229e41f4b71Sopenharmony_ci    }
230e41f4b71Sopenharmony_ci
231e41f4b71Sopenharmony_ci    windowStage.loadContent('pages/Index', (err, data) => {
232e41f4b71Sopenharmony_ci      if (err.code) {
233e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
234e41f4b71Sopenharmony_ci        return;
235e41f4b71Sopenharmony_ci      }
236e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
237e41f4b71Sopenharmony_ci    });
238e41f4b71Sopenharmony_ci  }
239e41f4b71Sopenharmony_ci}
240e41f4b71Sopenharmony_ci```
241e41f4b71Sopenharmony_ci
242e41f4b71Sopenharmony_ci## startupManager.removeStartupTaskResult
243e41f4b71Sopenharmony_ci
244e41f4b71Sopenharmony_ciremoveStartupTaskResult(startupTask: string): void
245e41f4b71Sopenharmony_ci
246e41f4b71Sopenharmony_ci删除指定初始化结果。
247e41f4b71Sopenharmony_ci
248e41f4b71Sopenharmony_ci**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AppStartup
249e41f4b71Sopenharmony_ci
250e41f4b71Sopenharmony_ci**参数:**
251e41f4b71Sopenharmony_ci
252e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
253e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
254e41f4b71Sopenharmony_ci  | startupTask | string | 是 | 启动任务所实现[StartupTask](js-apis-app-appstartup-startupTask.md)接口的类名称。 |
255e41f4b71Sopenharmony_ci  
256e41f4b71Sopenharmony_ci**错误码:**
257e41f4b71Sopenharmony_ci
258e41f4b71Sopenharmony_ci以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
259e41f4b71Sopenharmony_ci
260e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
261e41f4b71Sopenharmony_ci  | ------- | -------------------------------- |
262e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
263e41f4b71Sopenharmony_ci
264e41f4b71Sopenharmony_ci**示例:**:
265e41f4b71Sopenharmony_ci
266e41f4b71Sopenharmony_ci```ts
267e41f4b71Sopenharmony_ciimport { AbilityConstant, UIAbility, Want, startupManager } from '@kit.AbilityKit';
268e41f4b71Sopenharmony_ciimport { window } from '@kit.ArkUI';
269e41f4b71Sopenharmony_ciimport { hilog } from '@kit.PerformanceAnalysisKit';
270e41f4b71Sopenharmony_ci
271e41f4b71Sopenharmony_ciexport default class EntryAbility extends UIAbility {
272e41f4b71Sopenharmony_ci  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
273e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
274e41f4b71Sopenharmony_ci    startupManager.run(['StartupTask_001']).then(() => {
275e41f4b71Sopenharmony_ci      console.info("StartupTask_001 init successful");
276e41f4b71Sopenharmony_ci    })
277e41f4b71Sopenharmony_ci  }
278e41f4b71Sopenharmony_ci
279e41f4b71Sopenharmony_ci  onWindowStageCreate(windowStage: window.WindowStage) {
280e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
281e41f4b71Sopenharmony_ci    startupManager.removeStartupTaskResult('StartupTask_001');
282e41f4b71Sopenharmony_ci
283e41f4b71Sopenharmony_ci    windowStage.loadContent('pages/Index', (err, data) => {
284e41f4b71Sopenharmony_ci      if (err.code) {
285e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
286e41f4b71Sopenharmony_ci        return;
287e41f4b71Sopenharmony_ci      }
288e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
289e41f4b71Sopenharmony_ci    });
290e41f4b71Sopenharmony_ci  }
291e41f4b71Sopenharmony_ci}
292e41f4b71Sopenharmony_ci```
293