1# @ohos.app.ability.ServiceExtensionAbility (ServiceExtensionAbility) 2 3ServiceExtensionAbility模块提供后台服务相关扩展能力,提供后台服务创建、销毁、连接、断开等生命周期回调。 4 5> **说明:** 6> 7> 本模块首批接口从API version 9开始支持,从API version 9废弃,替换模块为[@ohos.app.ability.ServiceExtensionAbility](js-apis-app-ability-serviceExtensionAbility.md)。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 本模块接口仅可在Stage模型下使用。 9 10## 导入模块 11 12```ts 13import ServiceExtension from '@ohos.app.ability.ServiceExtensionAbility'; 14``` 15 16## 权限 17 18无 19 20## 属性 21 22**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 23 24**系统API**: 此接口为系统接口,三方应用不支持调用。 25 26| 名称 | 类型 | 可读 | 可写 | 说明 | 27| -------- | -------- | -------- | -------- | -------- | 28| context | [ServiceExtensionContext](js-apis-inner-application-serviceExtensionContext.md) | 是 | 否 | ServiceExtension的上下文环境,继承自ExtensionContext。 | 29 30 31## ServiceExtensionAbility.onCreate 32 33onCreate(want: Want): void; 34 35Extension生命周期回调,在创建时回调,执行初始化业务逻辑操作。 36 37**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 38 39**系统API**: 此接口为系统接口,三方应用不支持调用。 40 41**参数:** 42 43| 参数名 | 类型 | 必填 | 说明 | 44| -------- | -------- | -------- | -------- | 45| want | [Want](js-apis-app-ability-want.md) | 是 | 当前Extension相关的Want类型信息,包括ability名称、bundle名称等。 | 46 47**示例:** 48 49 ```ts 50 class ServiceExt extends ServiceExtension { 51 onCreate(want) { 52 console.log('onCreate, want:' + want.abilityName); 53 } 54 } 55 ``` 56 57 58## ServiceExtensionAbility.onDestroy 59 60onDestroy(): void; 61 62Extension生命周期回调,在销毁时回调,执行资源清理等操作。 63 64**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 65 66**系统API**: 此接口为系统接口,三方应用不支持调用。 67 68**示例:** 69 70 ```ts 71 class ServiceExt extends ServiceExtension { 72 onDestroy() { 73 console.log('onDestroy'); 74 } 75 } 76 ``` 77 78 79## ServiceExtensionAbility.onRequest 80 81onRequest(want: Want, startId: number): void; 82 83Extension生命周期回调,如果是startAbility或者startServiceExtensionAbility拉起的服务,会在onCreate之后回调。每次拉起服务都会回调,startId会递增。 84 85**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 86 87**系统API**: 此接口为系统接口,三方应用不支持调用。 88 89**参数:** 90 91| 参数名 | 类型 | 必填 | 说明 | 92| -------- | -------- | -------- | -------- | 93| want | [Want](js-apis-app-ability-want.md) | 是 | 当前Extension相关的Want类型信息,包括ability名称、bundle名称等。 | 94| startId | number | 是 | 返回拉起次数。首次拉起初始值返回1,多次之后自动递增。 | 95 96**示例:** 97 98 ```ts 99 class ServiceExt extends ServiceExtension { 100 onRequest(want, startId) { 101 console.log('onRequest, want:' + want.abilityName); 102 } 103 } 104 ``` 105 106 107## ServiceExtensionAbility.onConnect 108 109onConnect(want: Want): rpc.RemoteObject | Promise<rpc.RemoteObject>; 110 111Extension生命周期回调,如果是connectAbility拉起的服务,会在onCreate之后回调。返回一个RemoteObject对象,用于和客户端进行通信。 112 113**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 114 115**系统API**: 此接口为系统接口,三方应用不支持调用。 116 117**参数:** 118 119| 参数名 | 类型 | 必填 | 说明 | 120| -------- | -------- | -------- | -------- | 121| want | [Want](js-apis-app-ability-want.md)| 是 | 当前Extension相关的Want类型信息,包括ability名称、bundle名称等。 | 122 123**返回值:** 124 125| 类型 | 说明 | 126| -------- | -------- | 127| rpc.RemoteObject | 一个RemoteObject对象,用于和客户端进行通信。 | 128 129**示例:** 130 131 ```ts 132 import rpc from '@ohos.rpc'; 133 class StubTest extends rpc.RemoteObject{ 134 constructor(des) { 135 super(des); 136 } 137 onConnect(code, data, reply, option) { 138 } 139 } 140 class ServiceExt extends ServiceExtension { 141 onConnect(want) { 142 console.log('onConnect , want:' + want.abilityName); 143 return new StubTest('test'); 144 } 145 } 146 ``` 147 148 149## ServiceExtensionAbility.onDisconnect 150 151onDisconnect(want: Want): void | Promise\<void>; 152 153Extension的生命周期,断开服务连接时回调。 154 155**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 156 157**系统API**: 此接口为系统接口,三方应用不支持调用。 158 159**参数:** 160 161| 参数名 | 类型 | 必填 | 说明 | 162| -------- | -------- | -------- | -------- | 163| want |[Want](js-apis-app-ability-want.md)| 是 | 当前Extension相关的Want类型信息,包括ability名称、bundle名称等。 | 164 165**示例:** 166 167 ```ts 168 class ServiceExt extends ServiceExtension { 169 onDisconnect(want) { 170 console.log('onDisconnect, want:' + want.abilityName); 171 } 172 } 173 ``` 174 175## ServiceExtensionAbility.onReconnect 176 177onReconnect(want: Want): void; 178 179当新客户端在所有以前的客户端连接之后尝试连接到服务扩展时调用 180 181**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 182 183**系统API**: 此接口为系统接口,三方应用不支持调用。 184 185**参数:** 186 187| 参数名 | 类型 | 必填 | 说明 | 188| -------- | -------- | -------- | -------- | 189| want |[Want](js-apis-app-ability-want.md)| 是 | 当前Extension相关的Want类型信息,包括ability名称、bundle名称等。 | 190 191**示例:** 192 193 ```ts 194 class ServiceExt extends ServiceExtension { 195 onReconnect(want) { 196 console.log('onReconnect, want:' + want.abilityName); 197 } 198 } 199 ``` 200 201## ServiceExtensionAbility.onConfigurationUpdate 202 203onConfigurationUpdate(newConfig: Configuration): void; 204 205当Extension更新配置信息时调用。 206 207**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 208 209**系统API**: 此接口为系统接口,三方应用不支持调用。 210 211**参数:** 212 213| 参数名 | 类型 | 必填 | 说明 | 214| -------- | -------- | -------- | -------- | 215| newConfig | [Configuration](js-apis-app-ability-configuration.md) | 是 | 表示需要更新的配置信息。 | 216 217**示例:** 218 219 ```ts 220 class ServiceExt extends ServiceExtension { 221 onConfigurationUpdate(config) { 222 console.log('onConfigurationUpdate, config:' + JSON.stringify(config)); 223 } 224 } 225 ``` 226 227## ServiceExtensionAbility.onDump 228 229onDump(params: Array\<string>): Array\<string>; 230 231转储客户端信息时调用。 232 233**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 234 235**系统API**: 此接口为系统接口,三方应用不支持调用。 236 237**参数:** 238 239| 参数名 | 类型 | 必填 | 说明 | 240| -------- | -------- | -------- | -------- | 241| params | Array\<string> | 是 | 表示命令形式的参数。| 242 243**示例:** 244 245 ```ts 246 class ServiceExt extends ServiceExtension { 247 onDump(params) { 248 console.log('dump, params:' + JSON.stringify(params)); 249 return ['params']; 250 } 251 } 252 ``` 253 254