提交 c2f2b4b7 编写于 作者: O openharmony_ci 提交者: Gitee

!1049 add ConnectRemoteAbility material

Merge pull request !1049 from zmx/dev1
...@@ -104,13 +104,13 @@ var promise = await featureAbility.startAbility( ...@@ -104,13 +104,13 @@ var promise = await featureAbility.startAbility(
## 连接Service<a name="section126857614018"></a> ## 连接本地Service<a name="section126857614018"></a>
如果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失败的回调。 在使用connectAbility()处理回调时,需要传入目标Service的Want与IAbilityConnection的实例。IAbilityConnection提供了以下方法供开发者实现:onConnect()是用来处理连接Service成功的回调,onDisconnect()是用来处理Service异常死亡的回调,onFailed()是用来处理连接Service失败的回调。
创建连接Service回调实例的代码示例如下: 创建连接本地Service回调实例的代码示例如下:
```javascript ```javascript
var mRemote; var mRemote;
...@@ -128,7 +128,7 @@ function onFailedCallback(code){ ...@@ -128,7 +128,7 @@ function onFailedCallback(code){
} }
``` ```
连接Service的代码示例如下: 连接本地Service的代码示例如下:
```javascript ```javascript
import featureAbility from '@ohos.ability.featureability'; import featureAbility from '@ohos.ability.featureability';
...@@ -158,7 +158,7 @@ export default { ...@@ -158,7 +158,7 @@ export default {
class MyStub extends rpc.RemoteObject{ class MyStub extends rpc.RemoteObject{
constructor(des) { constructor(des) {
if (typeof des === 'string') { if (typeof des === 'string') {
super(des, des.length); super(des);
} }
return null; return null;
} }
...@@ -183,3 +183,84 @@ export default { ...@@ -183,3 +183,84 @@ export default {
} }
``` ```
## 连接远程Service<a name="section126857614019"></a>
如果Service需要与Page Ability或其他应用的Service Ability进行跨设备交互,则须创建用于连接的Connection。Service支持其他Ability通过connectAbility()方法与其进行跨设备连接。
在使用connectAbility()处理回调时,需要传入目标Service的Want与IAbilityConnection的实例。IAbilityConnection提供了以下方法供开发者实现:onConnect()是用来处理连接Service成功的回调,onDisconnect()是用来处理Service异常死亡的回调,onFailed()是用来处理连接Service失败的回调。
创建连接远程Service回调实例的代码示例如下:
```javascript
var mRemote;
function onConnectCallback(element, remote){
console.log('ConnectRemoteAbility onConnect Callback')
mRemote = remote;
}
function onDisconnectCallback(element){
console.log('ConnectRemoteAbility onDisconnect Callback')
}
function onFailedCallback(code){
console.log('ConnectRemoteAbility onFailed Callback')
}
```
目标Service的Want需要包含远程deviceId,该远程deviceId可通过deviceManager获取。
连接远程Service的代码示例如下:
```javascript
import featureAbility from '@ohos.ability.featureability';
var connId = featureAbility.connectAbility(
{
deviceId: deviceId,
bundleName: "com.jstest.serviceability",
abilityName: "com.jstest.serviceability.MainAbility",
},
{
onConnect: onConnectCallback,
onDisconnect: onDisconnectCallback,
onFailed: onFailedCallback,
},
);
```
同时,Service侧也需要在onConnect()时返回IRemoteObject,从而定义与Service进行通信的接口。onConnect()需要返回一个IRemoteObject对象,OpenHarmony提供了IRemoteObject的默认实现,用户可以通过继承rpc.RemoteObject来创建自定义的实现类。
Service侧把自身的实例返回给调用侧的代码示例如下:
```javascript
import rpc from "@ohos.rpc";
var mMyStub;
export default {
onStart(want) {
class MyStub extends rpc.RemoteObject{
constructor(des) {
if (typeof des === 'string') {
super(des);
}
return null;
}
onRemoteRequest(code, message, reply, option) {
}
}
mMyStub = new MyStub("ServiceAbility-test");
},
onCommand(want, restart, startId) {
console.log('SerivceAbility onCommand');
},
onConnect(want) {
console.log('SerivceAbility OnConnect');
return mMyStub;
},
onDisconnect() {
console.log('SerivceAbility OnDisConnect');
},
onStop() {
console.log('SerivceAbility onStop');
},
}
```
\ No newline at end of file
...@@ -774,6 +774,14 @@ featureAbility.terminateSelf().then((void) => { console.info("============= ...@@ -774,6 +774,14 @@ featureAbility.terminateSelf().then((void) => { console.info("=============
| request | 只读 | Want | 是 | 表示被连接的ServiceAbility | | request | 只读 | Want | 是 | 表示被连接的ServiceAbility |
| options | 只读 | ConnectOptions | 是 | 被指定的回调方法 | | options | 只读 | ConnectOptions | 是 | 被指定的回调方法 |
* Want参数描述
| 名称 | 读写属性 | 类型 | 必填 | 描述 |
| ------------ | -------- | -------- | ---- | ---------------------------------- |
| deviceId | 只读 | string | 否 | 表示被连接的ServiceAbility的设备id,缺省表示连接本地的ServiceAbility |
| bundleName | 只读 | string | 是 | 表示被连接的ServiceAbility的包名 |
| abilityName | 只读 | string | 是 | 表示被连接的ServiceAbility的类名 |
- ConnectOptions类型说明 - ConnectOptions类型说明
| 名称 | 读写属性 | 类型 | 必填 | 描述 | | 名称 | 读写属性 | 类型 | 必填 | 描述 |
...@@ -804,6 +812,7 @@ function onFailedCallback(code){ ...@@ -804,6 +812,7 @@ function onFailedCallback(code){
} }
var connId = featureAbility.connectAbility( var connId = featureAbility.connectAbility(
{ {
deviceId: deviceId,
bundleName: "com.ix.ServiceAbility", bundleName: "com.ix.ServiceAbility",
abilityName: "ServiceAbilityA", abilityName: "ServiceAbilityA",
}, },
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册