未验证 提交 341a4226 编写于 作者: O openharmony_ci 提交者: Gitee

!23009 preferences&object示例代码适配ArkTs

Merge pull request !23009 from 李芮/arkts_object_preferneces
......@@ -58,11 +58,13 @@
```js
import UIAbility from '@ohos.app.ability.UIAbility';
import { BusinessError } from '@ohos.base';
import window from '@ohos.window';
class EntryAbility extends UIAbility {
onWindowStageCreate(windowStage) {
onWindowStageCreate(windowStage: window.WindowStage) {
try {
dataPreferences.getPreferences(this.context, 'mystore', (err, preferences) => {
dataPreferences.getPreferences(this.context, 'myStore', (err: BusinessError, preferences: dataPreferences.Preferences) => {
if (err) {
console.error(`Failed to get preferences. Code:${err.code},message:${err.message}`);
return;
......@@ -82,12 +84,13 @@
```js
import featureAbility from '@ohos.ability.featureAbility';
import { BusinessError } from '@ohos.base';
// 获取context
let context = featureAbility.getContext();
try {
dataPreferences.getPreferences(context, 'mystore', (err, preferences) => {
dataPreferences.getPreferences(this.context, 'myStore', (err: BusinessError, preferences: dataPreferences.Preferences) => {
if (err) {
console.error(`Failed to get preferences. Code:${err.code},message:${err.message}`);
return;
......@@ -157,7 +160,7 @@
```js
try {
preferences.flush((err) => {
preferences.flush((err: BusinessError) => {
if (err) {
console.error(`Failed to flush. Code:${err.code}, message:${err.message}`);
return;
......@@ -174,18 +177,20 @@
应用订阅数据变更需要指定observer作为回调方法。订阅的Key值发生变更后,当执行flush()方法时,observer被触发回调。示例代码如下所示:
```js
let observer = function (key) {
console.info('The key' + key + 'changed.');
interface observer {
key: string
}
preferences.on('change', observer);
preferences.on('change', (key: observer) => {
console.info('The key' + key + 'changed.');
});
// 数据产生变更,由'auto'变为'manual'
preferences.put('startup', 'manual', (err) => {
preferences.put('startup', 'manual', (err: BusinessError) => {
if (err) {
console.error(`Failed to put the value of 'startup'. Code:${err.code},message:${err.message}`);
return;
}
console.info("Succeeded in putting the value of 'startup'.");
preferences.flush((err) => {
preferences.flush((err: BusinessError) => {
if (err) {
console.error(`Failed to flush. Code:${err.code}, message:${err.message}`);
return;
......@@ -210,7 +215,7 @@
```js
try {
dataPreferences.deletePreferences(this.context, 'mystore', (err, val) => {
dataPreferences.deletePreferences(this.context, 'myStore', (err: BusinessError) => {
if (err) {
console.error(`Failed to delete preferences. Code:${err.code}, message:${err.message}`);
return;
......
......@@ -151,17 +151,26 @@
// 导入模块
import distributedDataObject from '@ohos.data.distributedDataObject';
import UIAbility from '@ohos.app.ability.UIAbility';
import { BusinessError } from '@ohos.base';
import window from '@ohos.window';
interface sourceObject{
name: string,
age: number,
isVis: boolean
parent: { [key: string]: string },
list: { [key: string]: string }[]
}
class EntryAbility extends UIAbility {
onWindowStageCreate(windowStage) {
// 创建对象,该对象包含4个属性类型:string、number、boolean和Object
let localObject = distributedDataObject.create(this.context, {
onWindowStageCreate(windowStage: window.WindowStage) {
let source: sourceObject = {
name: 'jack',
age: 18,
isVis: false,
parent: { mother: 'jack mom', father: 'jack Dad' },
list: [{ mother: 'jack mom' }, { father: 'jack Dad' }]
});
}
let localObject: distributedDataObject.DataObject = distributedDataObject.create(this.context, source);
}
}
```
......@@ -175,34 +184,43 @@
import featureAbility from '@ohos.ability.featureAbility';
// 获取context
let context = featureAbility.getContext();
// 创建对象,该对象包含4个属性类型:string、number、boolean和Object
let localObject = distributedDataObject.create(context, {
interface sourceObject{
name: string,
age: number,
isVis: boolean
parent: { [key: string]: string },
list: { [key: string]: string }[]
}
let source: sourceObject = {
name: 'jack',
age: 18,
isVis: false,
parent: { mother: 'jack mom', father: 'jack Dad' },
list: [{ mother: 'jack mom' }, { father: 'jack Dad' }]
});
}
// 创建对象,该对象包含4个属性类型:string、number、boolean和Object
let localObject: distributedDataObject.DataObject = distributedDataObject.create(context, source);
```
4. 加入同步组网。同步组网中的数据对象分为发起方和被拉起方。
```js
// 设备1加入sessionId
let sessionId = '123456';
let sessionId: string = '123456';
localObject.setSessionId(sessionId);
// 和设备1协同的设备2加入同一个session
// 创建对象,该对象包含4个属性类型:string、number、boolean和Object
let remoteObject = distributedDataObject.create(this.context, {
let remoteSource: sourceObject = {
name: undefined,
age: undefined, // undefined表示数据来自对端
isVis: true,
parent: undefined,
list: undefined
});
}
let remoteObject: distributedDataObject.DataObject = distributedDataObject.create(this.context, remoteSource);
// 收到status上线后remoteObject同步数据,即name变成jack,age是18
remoteObject.setSessionId(sessionId);
```
......@@ -210,18 +228,19 @@
5. 监听对象数据变更。可监听对端数据的变更,以callback作为变更回调实例。
```js
function changeCallback(sessionId, changeData) {
console.info(`change: ${sessionId}`);
if (changeData !== null && changeData !== undefined) {
changeData.forEach(element => {
console.info(`The element ${localObject[element]} changed.`);
});
}
interface ChangeCallback {
sessionId: string,
fields: Array<string>
}
// 发起方要在changeCallback里刷新界面,则需要将正确的this绑定给changeCallback
localObject.on("change", this.changeCallback.bind(this));
localObject.on("change", (changeData:ChangeCallback) => {
console.info("change" + changeData.sessionId);
if (changeData.fields != null && changeData.fields != undefined) {
for (let index: number = 0; index < changeData.fields.length; index++) {
console.info(`The element ${localObject[changeData.fields[index]]} changed.`);
}
}
});
```
6. 修改对象属性,对象属性支持基本类型(数字类型、布尔类型、字符串类型)以及复杂类型(数组、基本类型嵌套等)。
......@@ -256,7 +275,14 @@
```js
// 删除变更回调changeCallback
localObject.off('change', this.changeCallback);
localObject.off('change',(changeData: ChangeCallback) => {
console.info("change" + changeData.sessionId);
if (changeData.fields != null && changeData.fields != undefined) {
for (let index: number = 0; index < changeData.fields.length; index++) {
console.info("changed !" + changeData.fields[index] + " " + g_object[changeData.fields[index]]);
}
}
});
// 删除所有的变更回调
localObject.off('change');
```
......@@ -264,27 +290,32 @@
9. 监听分布式数据对象的上下线。可以监听对端分布式数据对象的上下线。
```js
function statusCallback(sessionId, networkId, status) {
// 业务处理
interface onStatusCallback {
sessionId: string,
networkId: string,
status: 'online' | 'offline'
}
localObject.on('status', this.statusCallback);
localObject.on('status', (statusCallback: onStatusCallback) => {
console.info("status changed " + statusCallback.sessionId + " " + statusCallback.status + " " + statusCallback.networkId);
// 业务处理
});
```
10. 保存和撤回已保存的数据对象。
```js
// 保存数据对象,如果应用退出后组网内设备需要恢复对象数据时调用
localObject.save('local').then((result) => {
localObject.save("local").then((result: distributedDataObject.SaveSuccessResponse) => {
console.info(`Succeeded in saving. SessionId:${result.sessionId},version:${result.version},deviceId:${result.deviceId}`);
}).catch((err) => {
}).catch((err: BusinessError) => {
console.error(`Failed to save. Code:${err.code},message:${err.message}`);
});
// 撤回保存的数据对象
localObject.revokeSave().then((result) => {
localObject.revokeSave().then((result: distributedDataObject.RevokeSaveSuccessResponse) => {
console.info(`Succeeded in revokeSaving. Session:${result.sessionId}`);
}).catch((err) => {
}).catch((err: BusinessError) => {
console.error(`Failed to revokeSave. Code:${err.code},message:${err.message}`);
});
```
......@@ -292,8 +323,16 @@
11. 删除监听分布式数据对象的上下线。可以指定删除监听的上下线回调;也可以不指定,这将会删除该分布式数据对象的所有上下线回调。
```js
interface offStatusCallback {
sessionId: string,
deviceId: string,
status: 'online' | 'offline'
}
// 删除上下线回调statusCallback
localObject.off('status', this.statusCallback);
localObject.off('status', (statusCallback: offStatusCallback) => {
console.info("status changed " + statusCallback.sessionId + " " + statusCallback.status + " " + statusCallback.deviceId);
// 业务处理
});
// 删除所有的上下线回调
localObject.off('status');
```
......@@ -302,7 +341,7 @@
```js
localObject.setSessionId(() => {
console.info('leave all lession.');
console.info('leave all session.');
});
```
......
......@@ -42,10 +42,20 @@ FA模型示例:
// 导入模块
import distributedObject from '@ohos.data.distributedDataObject';
import featureAbility from '@ohos.ability.featureAbility';
import { BusinessError } from '@ohos.base';
// 获取context
let context = featureAbility.getContext();
// 创建对象,该对象包含4个属性类型:string、number、boolean和Object
let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});
interface sourceObject{
name: string,
age: number,
isVis: boolean
}
let source: sourceObject = {
name: "amy",
age:18,
isVis:false
}
let g_object: distributedObject.DataObject = distributedObject.create(context, source);
```
Stage模型示例:
......@@ -54,13 +64,23 @@ Stage模型示例:
// 导入模块
import distributedObject from '@ohos.data.distributedDataObject';
import UIAbility from '@ohos.app.ability.UIAbility';
let g_object = null;
import { BusinessError } from '@ohos.base';
import window from '@ohos.window';
let g_object: distributedObject.DataObject = null;
interface sourceObject{
name: string,
age: number,
isVis: boolean
}
class EntryAbility extends UIAbility {
onWindowStageCreate(windowStage){
// 创建对象,该对象包含4个属性类型:string、number、boolean和Object
g_object = distributedObject.create(this.context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});
onWindowStageCreate(windowStage: window.WindowStage) {
let source: sourceObject = {
name: "amy",
age:18,
isVis:false
}
g_object = distributedObject.create(this.context, source);
}
}
```
......@@ -83,7 +103,7 @@ genSessionId(): string
```js
import distributedObject from '@ohos.data.distributedDataObject';
let sessionId = distributedObject.genSessionId();
let sessionId: string = distributedObject.genSessionId();
```
## SaveSuccessResponse<sup>9+</sup>
......@@ -179,7 +199,7 @@ g_object.setSessionId(distributedObject.genSessionId(), ()=>{
});
// 退出分布式组网
g_object.setSessionId(() => {
console.info("leave all lession.");
console.info("leave all session.");
});
```
......@@ -219,13 +239,13 @@ setSessionId(sessionId?: string): Promise&lt;void&gt;
// g_object加入分布式组网
g_object.setSessionId(distributedObject.genSessionId()).then (()=>{
console.info("join session.");
}).catch((error)=>{
}).catch((error: BusinessError)=>{
console.info("error:" + error.code + error.message);
});
// 退出分布式组网
g_object.setSessionId().then (()=>{
console.info("leave all lession.");
}).catch((error)=>{
console.info("leave all session.");
}).catch((error: BusinessError)=>{
console.info("error:" + error.code + error.message);
});
```
......@@ -248,15 +268,18 @@ on(type: 'change', callback: Callback<{ sessionId: string, fields: Array&lt;stri
**示例:**
```js
globalThis.changeCallback = (sessionId, changeData) => {
console.info("change" + sessionId);
if (changeData != null && changeData != undefined) {
changeData.forEach(element => {
console.info("changed !" + element + " " + g_object[element]);
});
}
interface ChangeCallback {
sessionId: string,
fields: Array<string>
}
g_object.on("change", globalThis.changeCallback);
g_object.on("change", (changeData: ChangeCallback) => {
console.info("change" + changeData.sessionId);
if (changeData.fields != null && changeData.fields != undefined) {
for (let index: number = 0; index < changeData.fields.length; index++) {
console.info("changed !" + changeData.fields[index] + " " + g_object[changeData.fields[index]]);
}
}
});
```
### off('change')<sup>9+</sup>
......@@ -279,7 +302,14 @@ off(type: 'change', callback?: Callback<{ sessionId: string, fields: Array&lt;st
```js
// 删除数据变更回调changeCallback
g_object.off("change", globalThis.changeCallback);
g_object.off("change", (changeData:ChangeCallback) => {
console.info("change" + changeData.sessionId);
if (changeData.fields != null && changeData.fields != undefined) {
for (let index: number = 0; index < changeData.fields.length; index++) {
console.info("changed !" + changeData.fields[index] + " " + g_object[changeData.fields[index]]);
}
}
});
// 删除所有的数据变更回调
g_object.off("change");
```
......@@ -302,10 +332,15 @@ on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, st
**示例:**
```js
globalThis.statusCallback = (sessionId, networkId, status) => {
globalThis.response += "status changed " + sessionId + " " + status + " " + networkId;
interface onStatusCallback {
sessionId: string,
networkId: string,
status: 'online' | 'offline'
}
g_object.on("status", globalThis.statusCallback);
g_object.on("status", (statusCallback:onStatusCallback) => {
console.info("status changed " + statusCallback.sessionId + " " + statusCallback.status + " " + statusCallback.networkId);
});
```
### off('status')<sup>9+</sup>
......@@ -327,11 +362,15 @@ off(type: 'status', callback?: Callback<{ sessionId: string, deviceId: string, s
**示例:**
```js
globalThis.statusCallback = (sessionId, networkId, status) => {
globalThis.response += "status changed " + sessionId + " " + status + " " + networkId;
interface offStatusCallback {
sessionId: string,
networkId: string,
status: 'online' | 'offline'
}
// 删除上下线回调changeCallback
g_object.off("status",globalThis.statusCallback);
g_object.off("status", (statusCallback:StatusCallback) => {
console.info("status changed " + statusCallback.sessionId + " " + statusCallback.status + " " + statusCallback.networkId);
});
// 删除所有的上下线回调
g_object.off("status");
```
......@@ -363,7 +402,7 @@ save(deviceId: string, callback: AsyncCallback&lt;SaveSuccessResponse&gt;): void
```ts
g_object.setSessionId("123456");
g_object.save("local", (err, result) => {
g_object.save("local", (err: BusinessError, result:distributedObject.SaveSuccessResponse) => {
if (err) {
console.info("save failed, error code = " + err.code);
console.info("save failed, error message: " + err.message);
......@@ -408,12 +447,12 @@ save(deviceId: string): Promise&lt;SaveSuccessResponse&gt;
```js
g_object.setSessionId("123456");
g_object.save("local").then((result) => {
g_object.save("local").then((result: distributedObject.SaveSuccessResponse) => {
console.info("save callback");
console.info("save sessionId " + result.sessionId);
console.info("save version " + result.version);
console.info("save deviceId " + result.deviceId);
}).catch((err) => {
}).catch((err: BusinessError) => {
console.info("save failed, error code = " + err.code);
console.info("save failed, error message: " + err.message);
});
......@@ -441,7 +480,7 @@ revokeSave(callback: AsyncCallback&lt;RevokeSaveSuccessResponse&gt;): void
```js
g_object.setSessionId("123456");
// 持久化数据
g_object.save("local", (err, result) => {
g_object.save("local", (err: BusinessError, result: distributedObject.SaveSuccessResponse) => {
if (err) {
console.info("save failed, error code = " + err.code);
console.info("save failed, error message: " + err.message);
......@@ -453,7 +492,7 @@ g_object.save("local", (err, result) => {
console.info("save deviceId: " + result.deviceId);
});
// 删除持久化保存的数据
g_object.revokeSave((err, result) => {
g_object.revokeSave((err: BusinessError, result: distributedObject.RevokeSaveSuccessResponse) => {
if (err) {
console.info("revokeSave failed, error code = " + err.code);
console.info("revokeSave failed, error message: " + err.message);
......@@ -486,20 +525,20 @@ revokeSave(): Promise&lt;RevokeSaveSuccessResponse&gt;
```ts
g_object.setSessionId("123456");
// 持久化数据
g_object.save("local").then((result) => {
g_object.save("local").then((result: distributedObject.SaveSuccessResponse) => {
console.info("save callback");
console.info("save sessionId " + result.sessionId);
console.info("save version " + result.version);
console.info("save deviceId " + result.deviceId);
}).catch((err) => {
}).catch((err: BusinessError) => {
console.info("save failed, error code = " + err.code);
console.info("save failed, error message: " + err.message);
});
// 删除持久化保存的数据
g_object.revokeSave().then((result) => {
g_object.revokeSave().then((result: distributedObject.RevokeSaveSuccessResponse) => {
console.info("revokeSave callback");
console.info("sessionId" + result.sessionId);
}).catch((err)=> {
}).catch((err: BusinessError)=> {
console.info("revokeSave failed, error code = " + err.code);
console.info("revokeSave failed, error message = " + err.message);
});
......@@ -534,8 +573,17 @@ createDistributedObject(source: object): DistributedObject
```js
import distributedObject from '@ohos.data.distributedDataObject';
// 创建对象,对象包含4个属性类型,string,number,boolean和Object
let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});
interface sourceObject{
name: string,
age: number,
isVis: boolean
}
let source: sourceObject = {
name: "amy",
age:18,
isVis:false
}
let g_object: distributedObject.DistributedObject = distributedObject.createDistributedObject(source);
```
## DistributedObject<sup>(deprecated)</sup>
......@@ -572,7 +620,17 @@ setSessionId(sessionId?: string): boolean
```js
import distributedObject from '@ohos.data.distributedDataObject';
let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});;
interface sourceObject{
name: string,
age: number,
isVis: boolean
}
let source: sourceObject = {
name: "amy",
age:18,
isVis:false
}
let g_object: distributedObject.DistributedObject = distributedObject.createDistributedObject(source);
// g_object加入分布式组网
g_object.setSessionId(distributedObject.genSessionId());
// 设置为""退出分布式组网
......@@ -602,16 +660,29 @@ on(type: 'change', callback: Callback<{ sessionId: string, fields: Array&lt;stri
```js
import distributedObject from '@ohos.data.distributedDataObject';
let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});
globalThis.changeCallback = (sessionId, changeData) => {
console.info("change" + sessionId);
if (changeData != null && changeData != undefined) {
changeData.forEach(element => {
console.info("changed !" + element + " " + g_object[element]);
});
}
interface sourceObject{
name: string,
age: number,
isVis: boolean
}
g_object.on("change", globalThis.changeCallback);
interface ChangeCallback {
sessionId: string,
fields: Array<string>
}
let source: sourceObject = {
name: "amy",
age:18,
isVis:false
}
let g_object: distributedObject.DistributedObject = distributedObject.createDistributedObject(source);
g_object.on("change", (changeData:ChangeCallback) => {
console.info("change" + changeData.sessionId);
if (changeData.fields != null && changeData.fields != undefined) {
for (let index: number = 0; index < changeData.fields.length; index++) {
console.info("changed !" + changeData.fields[index] + " " + g_object[changeData.fields[index]]);
}
}
});
```
### off('change')<sup>(deprecated)</sup>
......@@ -638,9 +709,30 @@ off(type: 'change', callback?: Callback<{ sessionId: string, fields: Array&lt;st
```js
import distributedObject from '@ohos.data.distributedDataObject';
let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});
interface sourceObject{
name: string,
age: number,
isVis: boolean
}
interface ChangeCallback {
sessionId: string,
fields: Array<string>
}
let source: sourceObject = {
name: "amy",
age:18,
isVis:false
}
let g_object: distributedObject.DistributedObject = distributedObject.createDistributedObject(source);
// 删除数据变更回调changeCallback
g_object.off("change", globalThis.changeCallback);
g_object.off("change", (changeData:ChangeCallback) => {
console.info("change" + changeData.sessionId);
if (changeData.fields != null && changeData.fields != undefined) {
for (let index: number = 0; index < changeData.fields.length; index++) {
console.info("changed !" + changeData.fields[index] + " " + g_object[changeData.fields[index]]);
}
}
});
// 删除所有的数据变更回调
g_object.off("change");
```
......@@ -668,11 +760,27 @@ on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, st
```js
import distributedObject from '@ohos.data.distributedDataObject';
globalThis.statusCallback = (sessionId, networkId, status) => {
globalThis.response += "status changed " + sessionId + " " + status + " " + networkId;
interface sourceObject{
name: string,
age: number,
isVis: boolean
}
interface StatusCallback {
sessionId: string,
networkId: string,
status: 'online' | 'offline'
}
let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});
g_object.on("status", globalThis.statusCallback);
let source: sourceObject = {
name: "amy",
age:18,
isVis:false
}
let g_object: distributedObject.DistributedObject = distributedObject.createDistributedObject(source);
g_object.on("status", (statusCallback:StatusCallback) => {
console.info("status changed " + statusCallback.sessionId + " " + statusCallback.status + " " + statusCallback.networkId);
});
```
### off('status')<sup>(deprecated)</sup>
......@@ -699,12 +807,26 @@ off(type: 'status', callback?: Callback<{ sessionId: string, deviceId: string, s
```js
import distributedObject from '@ohos.data.distributedDataObject';
let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});
globalThis.statusCallback = (sessionId, networkId, status) => {
globalThis.response += "status changed " + sessionId + " " + status + " " + networkId;
interface sourceObject{
name: string,
age: number,
isVis: boolean
}
interface offStatusCallback {
sessionId: string,
deviceId: string,
status: 'online' | 'offline'
}
let source: sourceObject = {
name: "amy",
age:18,
isVis:false
}
let g_object: distributedObject.DistributedObject = distributedObject.createDistributedObject(source);
// 删除上下线回调changeCallback
g_object.off("status",globalThis.statusCallback);
g_object.off("status", (statusCallback:offStatusCallback) => {
console.info("status changed " + statusCallback.sessionId + " " + statusCallback.status + " " + statusCallback.deviceId);
});
// 删除所有的上下线回调
g_object.off("status");
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册