提交 4ec527b0 编写于 作者: ahjxliubao2's avatar ahjxliubao2

IssueNo:#I4Z09D

Description:添加serviceExtensionAbility文档
Sig: SIG_ApplicationFramework
Feature or Bugfix: Feature
Binary Source: No
Signed-off-by: ahjxliubao2's avatarwuliubao <ahjxliubao@163.com>
上级 ffe15d9a
# ServiceExtensionAbility开发指导
\ No newline at end of file
# ServiceExtensionAbility开发指导
## 基本概念
ExtensionAbility,是Stage模型中新增的扩展组件的基类,一般用于处理无界面的任务,生命周期较简单,没有前后台生命周期。ServiceExtensionAbility是ExtensionAbility的扩展类。
开发者可以自定义类继承ServiceExtensionAbility,通过重写基类中相关生命周期方法,来做初始化、连接中、断开连接时相关业务逻辑操作。
ServiceExtensionAbility中相关生命周期说明如下:
- onCreate()
首次调用startAbility、connectAbility时触发,开发者可以进行初始化操作。
- onRequest()
每次调用startAbility都会触发,首次调用时startId为1,重复调用startAbility递增。
- onConnect()
调用connectAbility触发,重复调用不会再次触发,除非调用disconnectAbility解除绑定后再调用;onConnect返回一个进程通信类RemoteObject。
- onDisconnect()
调用disconnectAbility触发,Extension如果是用connectAbility拉起的,并且已经没有其他应用绑定这个Extension,则会触发onDestroy生命周期销毁组件。
- onDestroy()
调用停止当前ability接口terminateSelf会触发。
## 约束与限制
- ServiceExtensionAbility使用和拉起都必须要有系统权限,鸿蒙系统当前不支持三方应用创建、使用和拉起后台应用功能。
## 启动ServiceExtensionAbility
1.创建ServiceExtensionAbility
开发者在创建TS文件中自定义类继承ServiceExtensionAbility,重写基类回调函数,示例如下:
```js
import rpc from '@ohos.rpc'
class StubTest extends rpc.RemoteObject {
constructor(des) {
super(des);
}
onRemoteRequest(code, data, reply, option) {
}
}
class ServiceExt extends ServiceExtensionAbility {
onCreate(want) {
console.log('onCreate, want:' + want.abilityName);
}
onRequest(want, startId) {
console.log('onRequest, want:' + want.abilityName);
}
onConnect(want) {
console.log('onConnect , want:' + want.abilityName);
return new StubTest("test");
}
onDisconnect(want) {
console.log('onDisconnect, want:' + want.abilityName);
}
onDestroy() {
console.log('onDestroy');
}
}
```
2.注册ServiceExtensionAbility
需要在应用配置文件module.json中进行注册,注册类型type需要设置为service。
**config.json配置样例**
```json
"extensionAbilities":[{
"name": "ServiceExtAbility",
"icon": "$media:icon",
"description": "service",
"type": "service",
"visible": true,
"srcEntrance": "./ets/ServiceExtAbility/ServiceExtAbility.ts"
}]
```
## 开发实例
针对ServiceExtensionAbility开发,有以下示例工程可供参考:
- [ServiceExtensionAbility]()
本示例ServiceExtensionAbility中:
在ServiceExtensionAbility目录中的ServiceExtAbility.ts文件创建一个ServiceExtensionAbility实例。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册