提交 a2427926 编写于 作者: L li_juntao

add distributedobject docs

Signed-off-by: Nli_juntao <lijuntao9@huawei.com>
上级 9f90b23c
......@@ -22,18 +22,18 @@
创建一个随机的sessionId,可将其设置为一个分布式数据对象的sessionId。
**表2** 分布式数据对象sessionId创建接口
| 包名 | 接口名 | 描述 |
| 包名 | 接口名 | 描述 |
| -------- | -------- | -------- |
| ohos.data.distributedDataObject| createDistributedObject(source: object): DistributedObject | 创建一个sessionId,可作为分布式数据对象的sessionId |
| ohos.data.distributedDataObject| genSessionId(): string | 创建一个sessionId,可作为分布式数据对象的sessionId |
### 设置分布式数据对象sessionId
设置分布式数据对象的sessionId,sessionId是一次(多设备)协同的唯一标识,同步的多个数据对象需要关联同一个sessionId。
**表3** 分布式数据对象sessionId设置接口
| 包名 | 接口名 | 描述 |
| 类名 | 接口名 | 描述 |
| -------- | -------- | -------- |
| ohos.data.distributedDataObject| setSessionId(sessionId?: string): boolean | 为分布式数据对象设置sessionId |
| DistributedDataObject | setSessionId(sessionId?: string): boolean | 为分布式数据对象设置sessionId |
### 订阅数据变更
......@@ -50,10 +50,10 @@
订阅数据对象上下线需要指定Callback作为回调方法,订阅的数据对象上线/下线后,对端的数据对象会收到Callback回调。
**表5** 分布式数据对象数据上下线订阅接口
| 类名 | 接口名 | 描述 |
| 类名 | 接口名 | 描述 |
| -------- | -------- | -------- |
| DistributedDataObject| on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, status: 'online' \\| 'offline' }>): void | 订阅数据对象上下线。 |
| DistributedDataObject| off(type: 'status', callback?: Callback<{ sessionId: string, deviceId: string, status: 'online' \\| 'offline' }>): void | 注销订阅。 |
| DistributedDataObject| on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, status: 'online' \| 'offline' }>): void | 订阅数据对象上下线。 |
| DistributedDataObject| off(type: 'status', callback?: Callback<{ sessionId: string, deviceId: string, status: 'online' \| 'offline' }>): void | 注销订阅。 |
......@@ -70,8 +70,8 @@
以下为创建分布式数据对象的代码示例:
```js
var local_object = distributedObject.createDistributedObject({{name:undefined, age:undefined, isVis:true,
parent:undefined, list:undefined}});
var local_object = distributedObject.createDistributedObject({name:undefined, age:undefined, isVis:true,
parent:undefined, list:undefined});
```
......@@ -79,25 +79,27 @@
以下为加入同步组网的代码示例:
发起方:
```js
local_object.setSessionId(distributedObject.genSessionId());
//将生成的local_object.__sessionId通过Intent传到对端设备
```
被拉起方:
```js
//获取Intent中的sessionId
remote_object.setSessionId(sessionId);
//发起方
var local_object = distributedObject.createDistributedObject({name:"jack", age:18, isVis:true,
parent:{mother:"jack mom",father:"jack Dad"},[{mother:"jack mom"}, {father:"jack Dad"}]};
local_object.setsessionId(sessionId);
//被发起方
var remote_object = distributedObject.createDistributedObject({name:undefined, age:undefined, isVis:true,
parent:undefined, list:undefined});
remote_object.setsessionId(sessionId);
//收到status上线后remote_object同步数据,即name变成jack,age是18
```
4. 监听对象数据变更。可支持监听本地数据或对端数据的变更,以 callback作为变更回调实例。
4. 监听对象数据变更。可监听对端数据的变更,以callback作为变更回调实例。
以下为监听对象数据变更的代码示例。
```js
changeCallback : function (sessionId, changeData) {
console.info("change" + sessionId);
if (changeData != null && changeData != undefined) {
changeData.forEach(element => {
console.info("changed !" + element + " " + local_object[element]);
......@@ -106,8 +108,7 @@
}
local_object.on("change", this.changeCallback);
```
5. 修改对象属性,对象属性支持基本类型(数字类型、布尔类型、字符串类型)以及复杂类型(数组、基本类型嵌套等)。
以下为修改分布式数据对象属性的代码示例:
......@@ -149,11 +150,11 @@
statusCallback : function (sessionId, networkid, status) {
this.response += "status changed " + sessionId + " " + status + " " + networkId;
}
local_object.on("status", this.changeCallback);
```
9. 删除监听分布式对象的上下线。可以指定删除监听的上下线回调;也可以不指定,这将会删除该分布式数据对象的所有上下线回调。
以下为取消监听数据变更的代码示例:
```js
//删除上下线回调changeCallback
......@@ -162,12 +163,14 @@
local_object.off("status");
```
10. 退出同步组网。分布式对象退出组网后,本地的数据变更对端不会同步。
以下为退出同步组网的代码示例:
```js
local_object.setSessionId("");
```
以下为退出同步组网的代码示例:
```js
local_object.setSessionId("");
```
......
......@@ -12,13 +12,13 @@
- **分布式数据对象**
分布式数据对象是一个JS对象型的封装,每一个分布式数据对象实例会创建一个内存数据库,每个应用程序创建的内存数据库相互隔离,对分布式数据对象的“读取”或“赋值”会自动映射到对应数据库的put/get操作。
分布式数据对象是一个JS对象型的封装,每一个分布式数据对象实例会创建一个内存数据库中的数据表,每个应用程序创建的内存数据库相互隔离,对分布式数据对象的“读取”或“赋值”会自动映射到对应数据库的put/get操作。
分布式数据对象的生命周期包括3个状态:**未初始化****本地数据对象****分布式数据对象**
- **未初始化**:未实例化,或已被销毁。
- **本地数据对象**:已创建对应的分布式内存数据库,但是还无法进行数据同步。
- **分布式数据对象**:已创建对应的分布式内存数据库,且设备在线(设备数=2),可以跨设备同步数据,若设备掉线,分布式数据对象退化为本地数据对象。
- **本地数据对象**:已创建对应的数据表,但是还无法进行数据同步。
- **分布式数据对象**:已创建对应的数据表,设备在线且组网内设置同样sessionId的对象数>=2,可以跨设备同步数据,若设备掉线或将sessionId置为空,分布式数据对象退化为本地数据对象。
## 运作机制
......
......@@ -11,9 +11,9 @@ import distributedObject from '@ohos.data.distributedDataObject'
```
## 权限
## 系统能力
SystemCapability.DistributedDataManager.DataObject.DistributedObject
## distributedDataObject.createDistributedObject
......@@ -27,7 +27,6 @@ createDistributedObject(source: object): DistributedObject
| -------- | -------- | -------- | -------- |
| object | source | 是 | 设置distributedObject的属性。 |
- 示例:
```js
import distributedObject from '@ohos.data.distributedDataObject'
......@@ -70,7 +69,6 @@ setSessionId(sessionId?: string): boolean
| -------- | -------- | -------- | -------- |
| sessionId | string | 是 | 分布式对象在可信组网中的标识ID。 |
- 示例:
```js
import distributedObject from '@ohos.data.distributedDataObject'
......@@ -103,7 +101,7 @@ on(type: 'change', callback: Callback<{ sessionId: string, fields: Array&lt;stri
parent:{mother:"jack mom",father:"jack Dad"}});
changeCallback : function (sessionId, changeData) {
console.info("change" + sessionId);
if (changeData != null && changeData != undefined) {
changeData.forEach(element => {
console.info("changed !" + element + " " + g_object[element]);
......@@ -126,7 +124,7 @@ off(type: 'change', callback?: Callback<{ sessionId: string, fields: Array&lt;st
| callback | Callback<{ sessionId: string, fields: Array&lt;string&gt; }> | 否 | 需要删除的变更回调,若不设置则删除该对象所有的变更回调。 |
示例:
- 示例:
```js
import distributedObject from '@ohos.data.distributedDataObject'
var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false,
......@@ -134,7 +132,7 @@ off(type: 'change', callback?: Callback<{ sessionId: string, fields: Array&lt;st
changeCallback : function (sessionId, changeData) {
console.info("change" + sessionId);
}
g_object.on("change", this.changeCallback);
//删除变更回调changeCallback
g_object.off("change", changeCallback);
......@@ -152,9 +150,9 @@ on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, st
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| type | string | 是 | 事件类型,固定为'status',表示对象上下线。 |
| callback | Callback<{ sessionId: string, networkId: string, status: 'online' \\| 'offline' }> | 是 | 监听上下线回调实例。 |
| callback | Callback<{ sessionId: string, networkId: string, status: 'online' \| 'offline' }> | 是 | 监听上下线回调实例。 |
示例:
- 示例:
```js
import distributedObject from '@ohos.data.distributedDataObject'
var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false,
......@@ -162,7 +160,7 @@ on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, st
statusCallback : function (sessionId, networkid, status) {
this.response += "status changed " + sessionId + " " + status + " " + networkId;
}
g_object.on("status", this.changeCallback);
```
......@@ -178,16 +176,16 @@ off(type: 'status', callback?: Callback<{ sessionId: string, deviceId: string, s
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| type | string | 是 | 事件类型,固定为'status',表示对象上下线。 |
| callback | Callback<{ sessionId: string, networkId: string, status: 'online' \\| 'offline' }> | 否 | 需要删除的上下线回调,若不设置则删除该对象所有的上下线回调。 |
| callback | Callback<{ sessionId: string, networkId: string, status: 'online' \| 'offline' }> | 否 | 需要删除的上下线回调,若不设置则删除该对象所有的上下线回调。 |
示例:
- 示例:
```js
import distributedObject from '@ohos.data.distributedDataObject'
statusCallback : function (sessionId, networkId, status) {
this.response += "status changed " + sessionId + " " + status + " " + networkId;
}
g_object.on("status", this.changeCallback);
//删除上下线回调changeCallback
g_object.off("status", changeCallback);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册