• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.app.ability.AppServiceExtensionAbility (应用后台服务扩展组件)
2<!--Kit: Ability Kit-->
3<!--Subsystem: Ability-->
4<!--Owner: @yewei0794-->
5<!--Designer: @jsjzju-->
6<!--Tester: @lixueqing513-->
7<!--Adviser: @huipeizi-->
8
9AppServiceExtensionAbility模块提供后台服务相关扩展能力,包括后台服务的创建、销毁、连接、断开等生命周期回调。
10
11> **说明:**
12>
13> 本模块首批接口从API version 20开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
14>
15> 本模块接口仅可在Stage模型下使用。
16
17## 约束限制
18
19- 当前仅支持2in1设备。
20- 应用集成AppServiceExtensionAbility的组件需要申请ACL权限(ohos.permission.SUPPORT_APP_SERVICE_EXTENSION)。该ACL权限当前只对企业普通应用开放申请。
21
22## 生命周期
23
24AppServiceExtensionAbility提供了[onCreate()](#oncreate)、[onRequest()](#onrequest)、[onConnect()](#onconnect)、[onDisconnect()](#ondisconnect)和[onDestroy()](#ondestroy)生命周期回调,开发者可根据需要重写对应的回调方法。下图展示了AppServiceExtensionAbility的生命周期。
25
26![AppServiceExtensionAbility-lifecycle](figures/AppServiceExtensionAbility-lifecycle.png)
27
28- **onCreate**
29  在AppServiceExtensionAbility实例创建时,系统会触发该回调。
30
31- **onDestroy**
32  在AppServiceExtensionAbility实例销毁时,系统会触发该回调。
33
34- **onRequest**
35  调用方使用[startAppServiceExtensionAbility()](js-apis-inner-application-uiAbilityContext.md#startappserviceextensionability20)拉起AppServiceExtensionAbility实例时,系统会触发该回调。
36
37- **onConnect**
38  调用方使用[connectAppServiceExtensionAbility](js-apis-inner-application-uiAbilityContext.md#connectappserviceextensionability20)连接AppServiceExtensionAbility实例时,系统会触发该回调。
39
40- **onDisconnect**
41  当所有连接方断开与AppServiceExtensionAbility实例的连接时,系统会触发该回调。
42
43## 导入模块
44
45```ts
46import { AppServiceExtensionAbility } from '@kit.AbilityKit';
47```
48
49## AppServiceExtensionAbility
50
51AppServiceExtensionAbility模块提供后台服务相关扩展能力,包括后台服务的创建、销毁、连接、断开等生命周期回调。
52
53### 属性
54
55**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
56
57| 名称 | 类型 | 只读 | 可选 | 说明 |
58| -------- | -------- | -------- | -------- | -------- |
59| context | [AppServiceExtensionContext](js-apis-inner-application-appServiceExtensionContext.md)  | 否 | 否 | AppServiceExtensionAbility的上下文环境,继承自[ExtensionContext](js-apis-inner-application-extensionContext.md)。 |
60
61
62### onCreate
63
64onCreate(want: Want): void
65
66在AppServiceExtensionAbility实例创建时,系统会触发该回调。应用可以在该接口中执行自己的业务逻辑初始化操作,例如注册公共事件监听等。
67
68> **说明:**
69>
70> 如果AppServiceExtensionAbility实例已创建,再次启动或连接该实例时不会触发onCreate()回调。
71
72**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
73
74**参数:**
75
76| 参数名 | 类型 | 必填 | 说明 |
77| -------- | -------- | -------- | -------- |
78| want |  [Want](js-apis-app-ability-want.md) | 是 | 调用方拉起当前AppServiceExtensionAbility实例时传递的Want类型信息,包括Ability名称、Bundle名称等。 |
79
80**示例:**
81
82  ```ts
83  import { AppServiceExtensionAbility, Want } from '@kit.AbilityKit';
84  import { hilog } from '@kit.PerformanceAnalysisKit';
85
86  const TAG: string = '[AppServiceExtAbility]';
87
88  export default class AppServiceExtAbility extends AppServiceExtensionAbility {
89    onCreate(want: Want) {
90      hilog.info(0x0000, TAG, `onCreate, want: ${want.abilityName}`);
91    }
92  }
93  ```
94
95### onDestroy
96
97onDestroy(): void
98
99在AppServiceExtensionAbility实例销毁时,系统会触发该回调。应用可以在该接口中执行资源清理等操作,如注销监听等。
100
101**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
102
103**示例:**
104
105  ```ts
106  import { AppServiceExtensionAbility } from '@kit.AbilityKit';
107  import { hilog } from '@kit.PerformanceAnalysisKit';
108
109  const TAG: string = '[AppServiceExtAbility]';
110
111  export default class AppServiceExtAbility extends AppServiceExtensionAbility {
112    onDestroy() {
113      hilog.info(0x0000, TAG, `onDestroy`);
114    }
115  }
116  ```
117
118### onRequest
119
120onRequest(want: Want, startId: number): void
121
122调用方每次使用[startAppServiceExtensionAbility()](js-apis-inner-application-uiAbilityContext.md#startappserviceextensionability20)拉起AppServiceExtensionAbility实例时,系统都会触发该回调。
123
124**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
125
126**参数:**
127
128| 参数名 | 类型 | 必填 | 说明 |
129| -------- | -------- | -------- | -------- |
130| want |  [Want](js-apis-app-ability-want.md) | 是 | 调用方拉起当前AppServiceExtensionAbility实例时传递的Want类型信息,包括Ability名称、Bundle名称等。 |
131| startId | number | 是 | 返回拉起次数。首次拉起初始值返回1,多次拉起时自动递增。 |
132
133**示例:**
134
135  ```ts
136  import { AppServiceExtensionAbility, Want } from '@kit.AbilityKit';
137  import { hilog } from '@kit.PerformanceAnalysisKit';
138
139  const TAG: string = '[AppServiceExtAbility]';
140
141  export default class AppServiceExtAbility extends AppServiceExtensionAbility {
142    onRequest(want: Want, startId: number) {
143      hilog.info(0x0000, TAG, `onRequest, want: ${want.abilityName}, startId: ${startId}`);
144    }
145  }
146  ```
147
148### onConnect
149
150onConnect(want: Want): rpc.RemoteObject
151
152调用方使用[connectAppServiceExtensionAbility](js-apis-inner-application-uiAbilityContext.md#connectappserviceextensionability20)连接AppServiceExtensionAbility实例时,系统会触发该回调。
153
154
155应用需要在该接口中返回一个RemoteObject对象,用于客户端和服务端进行通信。当AppServiceExtensionAbility实例处于连接状态时,如果调用方发起新的连接,系统会返回缓存的RemoteObject对象,而不会重复回调[onConnect()](#onconnect)接口。
156
157**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
158
159**参数:**
160
161| 参数名 | 类型 | 必填 | 说明 |
162| -------- | -------- | -------- | -------- |
163| want |  [Want](js-apis-app-ability-want.md)| 是 | 调用方拉起当前AppServiceExtensionAbility实例时传递的Want类型信息,包括Ability名称、Bundle名称等。 |
164
165**返回值:**
166
167| 类型 | 说明 |
168| -------- | -------- |
169| [rpc.RemoteObject](../apis-ipc-kit/js-apis-rpc.md#iremoteobject) | 一个RemoteObject对象,用于客户端和服务端进行通信。 |
170
171**示例:**
172
173  ```ts
174  import { AppServiceExtensionAbility, Want } from '@kit.AbilityKit';
175  import { rpc } from '@kit.IPCKit';
176  import { hilog } from '@kit.PerformanceAnalysisKit';
177
178  const TAG: string = '[AppServiceExtAbility]';
179
180  class StubTest extends rpc.RemoteObject {
181    constructor(des: string) {
182      super(des);
183    }
184
185    onConnect(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption) {
186    }
187  }
188
189  export default class AppServiceExtAbility extends AppServiceExtensionAbility {
190    onConnect(want: Want) {
191      hilog.info(0x0000, TAG, `onConnect, want: ${want.abilityName}`);
192      return new StubTest('test');
193    }
194  }
195  ```
196
197### onDisconnect
198
199onDisconnect(want: Want): void
200
201当所有连接方断开与AppServiceExtensionAbility实例的连接时,系统会触发该回调。
202
203**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
204
205**参数:**
206
207| 参数名 | 类型 | 必填 | 说明 |
208| -------- | -------- | -------- | -------- |
209| want |[Want](js-apis-app-ability-want.md)| 是 | AppServiceExtensionAbility实例最近一次被拉起或者连接时,调用方传递的Want类型信息,包括Ability名称、Bundle名称等。 |
210
211**示例:**
212
213  ```ts
214  import { AppServiceExtensionAbility, Want } from '@kit.AbilityKit';
215  import { hilog } from '@kit.PerformanceAnalysisKit';
216
217  const TAG: string = '[AppServiceExtAbility]';
218
219  export default class AppServiceExtAbility extends AppServiceExtensionAbility {
220    onDisconnect(want: Want) {
221      hilog.info(0x0000, TAG, `onDisconnect, want: ${want.abilityName}`);
222    }
223  }
224  ```
225