• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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';
12
13async function startServiceAbility() {
14  try {
15    console.info('Begin to start ability')
16    let want: Want = {
17      bundleName: "com.example.myapplication",
18      abilityName: "com.example.myapplication.ServiceAbility"
19    }
20    await featureAbility.startAbility({want})
21    console.info(`Start ability succeed`)
22  } catch (error) {
23    console.error('Start ability failed with ' + error)
24  }
25}
26```
27
28
29执行上述代码后,Ability将通过[`startAbility()`](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)方法来启动ServiceAbility。
30
31
32- 如果ServiceAbility尚未运行,则系统会先调用onStart()来初始化ServiceAbility,再回调Service的onCommand()方法来启动ServiceAbility。
33
34- 如果ServiceAbility正在运行,则系统会直接回调ServiceAbility的onCommand()方法来启动ServiceAbility。
35