Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
c2f2b4b7
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
c2f2b4b7
编写于
12月 28, 2021
作者:
O
openharmony_ci
提交者:
Gitee
12月 28, 2021
浏览文件
操作
浏览文件
下载
差异文件
!1049 add ConnectRemoteAbility material
Merge pull request !1049 from zmx/dev1
上级
34a4aec2
e5425196
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
94 addition
and
4 deletion
+94
-4
zh-cn/application-dev/ability/service-ability.md
zh-cn/application-dev/ability/service-ability.md
+85
-4
zh-cn/application-dev/reference/apis/js-apis-featureAbility.md
.../application-dev/reference/apis/js-apis-featureAbility.md
+9
-0
未找到文件。
zh-cn/application-dev/ability/service-ability.md
浏览文件 @
c2f2b4b7
...
@@ -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
zh-cn/application-dev/reference/apis/js-apis-featureAbility.md
浏览文件 @
c2f2b4b7
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录