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