1# 启动ServiceAbility 2 3 4ServiceAbility的启动与其他Ability并无区别,应用开发者可以在PageAbility中通过featureAbility的startAbility接口拉起ServiceAbility,在ServiceAbility中通过particleAbility的startAbility接口拉起ServiceAbility。ServiceAbility的启动规则详见[组件启动规则](component-startup-rules.md)章节。 5 6 7如下示例展示了在PageAbility中通过startAbility启动bundleName为"com.example.myapplication",abilityName为"ServiceAbility"的ServiceAbility的方法。启动FA模型的ServiceAbility时,需要在abilityName前拼接bundleName字符串。 8 9```ts 10import featureAbility from '@ohos.ability.featureAbility'; 11import Want from '@ohos.app.ability.Want'; 12import promptAction from '@ohos.promptAction'; 13import hilog from '@ohos.hilog'; 14 15const TAG: string = 'PageServiceAbility'; 16const domain: number = 0xFF00; 17 18@Entry 19@Component 20struct PageServiceAbility { 21 async startServiceAbility(): Promise<void> { 22 try { 23 hilog.info(domain, TAG, 'Begin to start ability'); 24 let want: Want = { 25 bundleName: 'com.samples.famodelabilitydevelop', 26 abilityName: 'com.samples.famodelabilitydevelop.ServiceAbility' 27 }; 28 await featureAbility.startAbility({ want }); 29 promptAction.showToast({ 30 message: 'start_service_success_toast' 31 }); 32 hilog.info(domain, TAG, `Start ability succeed`); 33 } catch (error) { 34 hilog.error(domain, TAG, 'Start ability failed with ' + error); 35 } 36 } 37 build() { 38 // ... 39 } 40} 41``` 42 43 44执行上述代码后,Ability将通过[`startAbility()`](../reference/apis-ability-kit/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法来启动ServiceAbility。 45 46 47- 如果ServiceAbility尚未运行,则系统会先调用onStart()来初始化ServiceAbility,再回调Service的onCommand()方法来启动ServiceAbility。 48 49- 如果ServiceAbility正在运行,则系统会直接回调ServiceAbility的onCommand()方法来启动ServiceAbility。 50