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