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