未验证 提交 3365fd21 编写于 作者: O openharmony_ci 提交者: Gitee

!5185 ServiceAbility里添加IDL自动生成方式说明

Merge pull request !5185 from 刘宝/master
...@@ -121,15 +121,26 @@ let promise = featureAbility.startAbility( ...@@ -121,15 +121,26 @@ let promise = featureAbility.startAbility(
如果Service需要与Page Ability或其他应用的Service Ability进行交互,则须创建用于连接的Connection。Service支持其他Ability通过connectAbility()方法与其进行连接。 如果Service需要与Page Ability或其他应用的Service Ability进行交互,则须创建用于连接的Connection。Service支持其他Ability通过connectAbility()方法与其进行连接。
在使用connectAbility()处理回调时,需要传入目标Service的Want与IAbilityConnection的实例。IAbilityConnection提供了以下方法供开发者实现:onConnect()是用来处理连接Service成功的回调,onDisconnect()是用来处理Service异常死亡的回调,onFailed()是用来处理连接Service失败的回调。
创建连接本地Service回调实例的代码示例如下: 开发者可使用如下两种方式实现连接Service。
```javascript 1. 使用IDL自动生成代码
import prompt from '@system.prompt'
let mRemote; 使用OpenHarmony IDL(OpenHarmony Interface Definition Language)来自动生成对应客户端服务端及IRemoteObject代码,具体示例代码和说明请参考:
function onConnectCallback(element, remote){
- [`OpenHarmony IDL`:TS开发步骤](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/IDL/idl-guidelines.md#32-ts开发步骤)
2. 在对应文件编写代码
在使用connectAbility()处理回调时,需要传入目标Service的Want与IAbilityConnection的实例。IAbilityConnection提供了以下方法供开发者实现:onConnect()是用来处理连接Service成功的回调,onDisconnect()是用来处理Service异常死亡的回调,onFailed()是用来处理连接Service失败的回调。
创建连接本地Service回调实例的代码示例如下:
```javascript
import prompt from '@system.prompt'
let mRemote;
function onConnectCallback(element, remote){
console.log('onConnectLocalService onConnectDone element: ' + element); console.log('onConnectLocalService onConnectDone element: ' + element);
console.log('onConnectLocalService onConnectDone remote: ' + remote); console.log('onConnectLocalService onConnectDone remote: ' + remote);
mRemote = remote; mRemote = remote;
...@@ -155,22 +166,22 @@ function onConnectCallback(element, remote){ ...@@ -155,22 +166,22 @@ function onConnectCallback(element, remote){
console.log('sendRequest error:' + e); console.log('sendRequest error:' + e);
}); });
} }
function onDisconnectCallback(element){ function onDisconnectCallback(element){
console.log('ConnectAbility onDisconnect Callback') console.log('ConnectAbility onDisconnect Callback')
} }
function onFailedCallback(code){ function onFailedCallback(code){
console.log('ConnectAbility onFailed Callback') console.log('ConnectAbility onFailed Callback')
} }
``` ```
连接本地Service的代码示例如下: 连接本地Service的代码示例如下:
```javascript ```javascript
import featureAbility from '@ohos.ability.featureAbility'; import featureAbility from '@ohos.ability.featureAbility';
let connId = featureAbility.connectAbility( let connId = featureAbility.connectAbility(
{ {
bundleName: "com.jstest.service", bundleName: "com.jstest.service",
abilityName: "com.jstest.service.ServiceAbility", abilityName: "com.jstest.service.ServiceAbility",
...@@ -180,18 +191,18 @@ let connId = featureAbility.connectAbility( ...@@ -180,18 +191,18 @@ let connId = featureAbility.connectAbility(
onDisconnect: onDisconnectCallback, onDisconnect: onDisconnectCallback,
onFailed: onFailedCallback, onFailed: onFailedCallback,
}, },
); );
``` ```
同时,Service侧也需要在onConnect()时返回IRemoteObject,从而定义与Service进行通信的接口。onConnect()需要返回一个IRemoteObject对象。OpenHarmony提供了IRemoteObject的默认实现,开发者可以通过继承rpc.RemoteObject来创建自定义的实现类。 同时,Service侧也需要在onConnect()时返回IRemoteObject,从而定义与Service进行通信的接口。onConnect()需要返回一个IRemoteObject对象。OpenHarmony提供了IRemoteObject的默认实现,开发者可以通过继承rpc.RemoteObject来创建自定义的实现类。
Service侧把自身的实例返回给调用侧的代码示例如下: Service侧把自身的实例返回给调用侧的代码示例如下:
```javascript ```javascript
import rpc from "@ohos.rpc"; import rpc from "@ohos.rpc";
let mMyStub; let mMyStub;
export default { export default {
onStart() { onStart() {
class MyStub extends rpc.RemoteObject{ class MyStub extends rpc.RemoteObject{
constructor(des) { constructor(des) {
...@@ -228,8 +239,8 @@ export default { ...@@ -228,8 +239,8 @@ export default {
onStop() { onStop() {
console.log('ServiceAbility onStop'); console.log('ServiceAbility onStop');
}, },
} }
``` ```
### 连接远程Service<a name="section126857614019"></a>(当前仅对系统应用开放) ### 连接远程Service<a name="section126857614019"></a>(当前仅对系统应用开放)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册