1e41f4b71Sopenharmony_ci# Starting a ServiceAbility 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ciA ServiceAbility is started in the same way other abilities. You can start a ServiceAbility by calling **featureAbility.startAbility()** in the PageAbility or calling **particleAbility.startAbility()** in another ServiceAbility. For details about the startup rules, see [Component Startup Rules](component-startup-rules.md). 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ciThe following example shows how to use **startAbility()** to start the ServiceAbility whose **bundleName** is **com.example.myapplication** and **abilityName** is **ServiceAbility** in a PageAbility. When starting the ServiceAbility, concatenate the **bundleName** string before **abilityName**. 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci```ts 10e41f4b71Sopenharmony_ciimport featureAbility from '@ohos.ability.featureAbility'; 11e41f4b71Sopenharmony_ciimport Want from '@ohos.app.ability.Want'; 12e41f4b71Sopenharmony_ciimport promptAction from '@ohos.promptAction'; 13e41f4b71Sopenharmony_ciimport hilog from '@ohos.hilog'; 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ciconst TAG: string = 'PageServiceAbility'; 16e41f4b71Sopenharmony_ciconst domain: number = 0xFF00; 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_ci@Entry 19e41f4b71Sopenharmony_ci@Component 20e41f4b71Sopenharmony_cistruct PageServiceAbility { 21e41f4b71Sopenharmony_ci async startServiceAbility(): Promise<void> { 22e41f4b71Sopenharmony_ci try { 23e41f4b71Sopenharmony_ci hilog.info(domain, TAG, 'Begin to start ability'); 24e41f4b71Sopenharmony_ci let want: Want = { 25e41f4b71Sopenharmony_ci bundleName: 'com.samples.famodelabilitydevelop', 26e41f4b71Sopenharmony_ci abilityName: 'com.samples.famodelabilitydevelop.ServiceAbility' 27e41f4b71Sopenharmony_ci }; 28e41f4b71Sopenharmony_ci await featureAbility.startAbility({ want }); 29e41f4b71Sopenharmony_ci promptAction.showToast({ 30e41f4b71Sopenharmony_ci message: 'start_service_success_toast' 31e41f4b71Sopenharmony_ci }); 32e41f4b71Sopenharmony_ci hilog.info(domain, TAG, `Start ability succeed`); 33e41f4b71Sopenharmony_ci } catch (error) { 34e41f4b71Sopenharmony_ci hilog.error(domain, TAG, 'Start ability failed with ' + error); 35e41f4b71Sopenharmony_ci } 36e41f4b71Sopenharmony_ci } 37e41f4b71Sopenharmony_ci build() { 38e41f4b71Sopenharmony_ci // ... 39e41f4b71Sopenharmony_ci } 40e41f4b71Sopenharmony_ci} 41e41f4b71Sopenharmony_ci``` 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci 44e41f4b71Sopenharmony_ciIn the preceding code, [startAbility()](../reference/apis-ability-kit/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability) is used to start the ServiceAbility. 45e41f4b71Sopenharmony_ci 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ci- If the ServiceAbility is not running, the system calls **onStart()** to initialize the ServiceAbility, and then calls **onCommand()** on the ServiceAbility. 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci- If the ServiceAbility is running, the system directly calls **onCommand()** on the ServiceAbility. 50