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