Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
8f3aac8a
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看板
提交
8f3aac8a
编写于
7月 03, 2023
作者:
M
MangTsang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add sync interfaces
Signed-off-by:
N
MangTsang
<
mang.tsang@huawei.com
>
上级
c1becef4
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
240 addition
and
53 deletion
+240
-53
zh-cn/application-dev/database/data-persistence-by-preferences.md
...plication-dev/database/data-persistence-by-preferences.md
+26
-53
zh-cn/application-dev/reference/apis/js-apis-data-preferences.md
...pplication-dev/reference/apis/js-apis-data-preferences.md
+214
-0
未找到文件。
zh-cn/application-dev/database/data-persistence-by-preferences.md
浏览文件 @
8f3aac8a
...
...
@@ -28,19 +28,19 @@
## 接口说明
以下是用户首选项持久化功能的相关接口,
大部分为异步接口。异步接口均有callback和Promise两种返回形式,下表均以callback形式为例,
更多接口及使用方式请见
[
用户首选项
](
../reference/apis/js-apis-data-preferences.md
)
。
以下是用户首选项持久化功能的相关接口,更多接口及使用方式请见
[
用户首选项
](
../reference/apis/js-apis-data-preferences.md
)
。
| 接口名称
| 描述
|
|
-------- | --------
|
| getPreferences(context: Context, name: string, callback: AsyncCallback
<
Preferences
>
): void | 获取Preferences实例。 |
| put
(key: string, value: ValueType, callback: AsyncCallback
<
void
>
): void | 将数据写入Preferences实例,可通过flush将Preferences实例持久化。
|
| has
(key: string, callback: AsyncCallback
<
boolean
>
): void | 检查Preferences实例是否包含名为给定Key的存储键值对。给定的Key值不能为空。
|
| get
(key: string, defValue: ValueType, callback: AsyncCallback
<
ValueType
>
): void | 获取键对应的值,如果值为null或者非默认值类型,返回默认数据defValue。
|
| delete
(key: string, callback: AsyncCallback
<
void
>
): void | 从Preferences实例中删除名为给定Key的存储键值对。
|
| flush(callback: AsyncCallback
<
void
>
): void
| 将当前Preferences实例的数据异步存储到用户首选项持久化文件中。
|
| on(type: 'change', callback: Callback
<
{ key : string }
>
): void
| 订阅数据变更,订阅的Key的值发生变更后,在执行flush方法后,触发callback回调。
|
| off(type: 'change', callback?: Callback
<
{ key : string }
>
): void
| 取消订阅数据变更。
|
| deletePreferences(context: Context, name: string, callback: AsyncCallback
<
void
>
): void | 从内存中移除指定的Preferences实例。若Preferences实例有对应的持久化文件,则同时删除其持久化文件。 |
| 接口名称
| 描述
|
|
--------------------------------------------------------------------------------------------------|------------------------------------------------------------
|
| getPreferences(context: Context, name: string, callback: AsyncCallback
<
Preferences
>
): void | 获取Preferences实例。
|
| put
Sync(key: string, value: ValueType): void | 将数据写入Preferences实例,可通过flush将Preferences实例持久化。该接口存在异步接口。
|
| has
Sync(key: string): void | 检查Preferences实例是否包含名为给定Key的存储键值对。给定的Key值不能为空。该接口存在异步接口。
|
| get
Sync(key: string, defValue: ValueType): void | 获取键对应的值,如果值为null或者非默认值类型,返回默认数据defValue。该接口存在异步接口。
|
| delete
Sync(key: string): void | 从Preferences实例中删除名为给定Key的存储键值对。该接口存在异步接口。
|
| flush(callback: AsyncCallback
<
void
>
): void
| 将当前Preferences实例的数据异步存储到用户首选项持久化文件中。
|
| on(type: 'change', callback: Callback
<
{ key : string }
>
): void
| 订阅数据变更,订阅的Key的值发生变更后,在执行flush方法后,触发callback回调。
|
| off(type: 'change', callback?: Callback
<
{ key : string }
>
): void
| 取消订阅数据变更。
|
| deletePreferences(context: Context, name: string, callback: AsyncCallback
<
void
>
): void
| 从内存中移除指定的Preferences实例。若Preferences实例有对应的持久化文件,则同时删除其持久化文件。 |
## 开发步骤
...
...
@@ -102,40 +102,24 @@
3.
写入数据。
使用put()方法保存数据到缓存的Preferences实例中。在写入数据后,如有需要,可使用flush()方法将Preferences实例的数据存储到持久化文件。
使用put
Sync
()方法保存数据到缓存的Preferences实例中。在写入数据后,如有需要,可使用flush()方法将Preferences实例的数据存储到持久化文件。
> **说明:**
>
> 当对应的键已经存在时,put
()方法会修改其值。如果仅需要在键值对不存在时新增键值对,而不修改已有键值对,需使用has()方法检查是否存在对应键值对;如果不关心是否会修改已有键值对,则直接使用put()方法即可
。
> 当对应的键已经存在时,put
Sync()方法会修改其值。可以使用hasSync()方法检查是否存在对应键值对
。
示例代码如下所示:
```
js
try
{
preferences
.
has
(
'
startup
'
,
function
(
err
,
val
)
{
if
(
err
)
{
console
.
error
(
`Failed to check the key 'startup'. Code:
${
err
.
code
}
, message:
${
err
.
message
}
`
);
return
;
}
if
(
val
)
{
console
.
info
(
"
The key 'startup' is contained.
"
);
}
else
{
console
.
info
(
"
The key 'startup' does not contain.
"
);
// 此处以此键值对不存在时写入数据为例
try
{
preferences
.
put
(
'
startup
'
,
'
auto
'
,
(
err
)
=>
{
if
(
err
)
{
console
.
error
(
`Failed to put data. Code:
${
err
.
code
}
, message:
${
err
.
message
}
`
);
return
;
}
console
.
info
(
'
Succeeded in putting data.
'
);
})
}
catch
(
err
)
{
console
.
error
(
`Failed to put data. Code:
${
err
.
code
}
,message:
${
err
.
message
}
`
);
}
}
})
if
(
preferences
.
hasSync
(
'
startup
'
))
{
console
.
info
(
"
The key 'startup' is contained.
"
);
}
else
{
console
.
info
(
"
The key 'startup' does not contain.
"
);
// 此处以此键值对不存在时写入数据为例
preferences
.
putSync
(
'
startup
'
,
'
auto
'
);
}
}
catch
(
err
)
{
console
.
error
(
`Failed to check the key 'startup'. Code:
${
err
.
code
}
, message:
${
err
.
message
}
`
);
}
...
...
@@ -143,17 +127,12 @@
4.
读取数据。
使用get()方法获取数据,即指定键对应的值。如果值为null或者非默认值类型,则返回默认数据。示例代码如下所示:
使用get
Sync
()方法获取数据,即指定键对应的值。如果值为null或者非默认值类型,则返回默认数据。示例代码如下所示:
```
js
try
{
preferences
.
get
(
'
startup
'
,
'
default
'
,
(
err
,
val
)
=>
{
if
(
err
)
{
console
.
error
(
`Failed to get value of 'startup'. Code:
${
err
.
code
}
, message:
${
err
.
message
}
`
);
return
;
}
console
.
info
(
`Succeeded in getting value of 'startup'. val:
${
val
}
.`
);
})
let
val
=
preferences
.
getSync
(
'
startup
'
,
'
default
'
);
console
.
info
(
`Succeeded in getting value of 'startup'. val:
${
val
}
.`
);
}
catch
(
err
)
{
console
.
error
(
`Failed to get value of 'startup'. Code:
${
err
.
code
}
, message:
${
err
.
message
}
`
);
}
...
...
@@ -161,18 +140,12 @@
5.
删除数据。
使用delete()方法删除指定键值对,示例代码如下所示:
使用delete
Sync
()方法删除指定键值对,示例代码如下所示:
```
js
try
{
preferences
.
delete
(
'
startup
'
,
(
err
)
=>
{
if
(
err
)
{
console
.
error
(
`Failed to delete the key 'startup'. Code:
${
err
.
code
}
, message:
${
err
.
message
}
`
);
return
;
}
console
.
info
(
"
Succeeded in deleting the key 'startup'.
"
);
})
preferences
.
deleteSync
(
'
startup
'
);
}
catch
(
err
)
{
console
.
error
(
`Failed to delete the key 'startup'. Code:
${
err
.
code
}
, message:
${
err
.
message
}
`
);
}
...
...
zh-cn/application-dev/reference/apis/js-apis-data-preferences.md
浏览文件 @
8f3aac8a
...
...
@@ -434,6 +434,55 @@ class EntryAbility extends UIAbility {
}
```
## data_preferences.removePreferencesFromCacheSync<sup>10+</sup>
removePreferencesFromCacheSync(context: Context, name: string): void;
从内存中移除指定的Preferences实例,此为同步接口。
调用该接口后,应用不允许再使用该Preferences实例进行数据操作,否则会出现数据一致性问题。
**系统能力:**
SystemCapability.DistributedDataManager.Preferences.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------------------------- | ---- | ----------------------- |
| context | Context | 是 | 应用上下文。
<br>
FA模型的应用Context定义见
[
Context
](
js-apis-inner-app-context.md
)
。
<br>
Stage模型的应用Context定义见
[
Context
](
js-apis-inner-application-uiAbilityContext.md
)
。 |
| name | string | 是 | Preferences实例的名称。 |
**示例:**
FA模型示例:
```
js
// 获取context
import
featureAbility
from
'
@ohos.ability.featureAbility
'
;
let
context
=
featureAbility
.
getContext
();
try
{
data_preferences
.
removePreferencesFromCacheSync
(
context
,
'
mystore
'
);
}
catch
(
err
)
{
console
.
info
(
"
Failed to remove preferences. code =
"
+
err
.
code
+
"
, message =
"
+
err
.
message
);
}
```
Stage模型示例:
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
class
EntryAbility
extends
UIAbility
{
onWindowStageCreate
(
windowStage
)
{
try
{
data_preferences
.
removePreferencesFromCacheSync
(
this
.
context
,
'
mystore
'
);
}
catch
(
err
)
{
console
.
info
(
"
Failed to remove preferences. code =
"
+
err
.
code
+
"
, message =
"
+
err
.
message
);
}
}
}
```
## Preferences
存储实例,提供获取和修改存储数据的接口。
...
...
@@ -510,6 +559,38 @@ try {
}
```
### getSync<sup>10+</sup>
getSync(key: string, defValue: ValueType): ValueType;
获取键对应的值,如果值为null或者非默认值类型,返回默认数据defValue,此为同步接口。
**系统能力:**
SystemCapability.DistributedDataManager.Preferences.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------- | ---- | ------------------------------------------------------------ |
| key | string | 是 | 要获取的存储Key名称,不能为空。 |
| defValue |
[
ValueType
](
#valuetype
)
| 是 | 默认返回值。支持number、string、boolean、Array
\<
number>、Array
\<
string>、Array
\<
boolean>类型。 |
**返回值:**
| 类型 | 说明 |
| ----------------------------------- | ----------------------------- |
|
[
ValueType
](
#valuetype
)
| 返回键对应的值。 |
**示例:**
```
js
try
{
let
value
=
preferences
.
getSync
(
'
startup
'
,
'
default
'
);
console
.
info
(
"
Succeeded in getting value of 'startup'. Data:
"
+
value
);
}
catch
(
err
)
{
console
.
info
(
"
Failed to get value of 'startup'. code =
"
+
err
.
code
+
"
, message =
"
+
err
.
message
);
}
```
### getAll
getAll(callback: AsyncCallback
<
Object
>
): void;
...
...
@@ -574,6 +655,33 @@ try {
}
```
### getAllSync<sup>10+</sup>
getAllSync(): Object;
获取含有所有键值的Object对象,此为同步接口。
**系统能力:**
SystemCapability.DistributedDataManager.Preferences.Core
**返回值:**
| 类型 | 说明 |
| --------------------- | ------------------------------------------- |
| Object | 返回含有所有键值的Object对象。 |
**示例:**
```
js
try
{
let
value
=
preferences
.
getAllSync
();
let
allKeys
=
Object
.
keys
(
value
);
console
.
info
(
'
getAll keys =
'
+
allKeys
);
console
.
info
(
"
getAll object =
"
+
JSON
.
stringify
(
value
));
}
catch
(
err
)
{
console
.
info
(
"
Failed to get all key-values. code =
"
+
err
.
code
+
"
, message =
"
+
err
.
message
);
}
```
### put
put(key: string, value: ValueType, callback: AsyncCallback
<
void
>
): void
...
...
@@ -644,6 +752,32 @@ try {
```
### putSync<sup>10+</sup>
putSync(key: string, value: ValueType): void;
将数据写入Preferences实例,可通过
[
flush
](
#flush
)
将Preferences实例持久化,此为同步接口。
**系统能力:**
SystemCapability.DistributedDataManager.Preferences.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ----------------------- | ---- | ------------------------------------------------------------ |
| key | string | 是 | 要修改的存储的Key,不能为空。 |
| value |
[
ValueType
](
#valuetype
)
| 是 | 存储的新值。支持number、string、boolean、Array
\<
number>、Array
\<
string>、Array
\<
boolean>类型。 |
**示例:**
```
js
try
{
preferences
.
putSync
(
'
startup
'
,
'
auto
'
);
}
catch
(
err
)
{
console
.
info
(
"
Failed to put value of 'startup'. code =
"
+
err
.
code
+
"
, message =
"
+
err
.
message
);
}
```
### has
has(key: string, callback: AsyncCallback
<
boolean
>
): void
...
...
@@ -720,6 +854,42 @@ try {
```
### hasSync<sup>10+</sup>
hasSync(key: string): boolean;
检查Preferences实例是否包含名为给定Key的存储键值对,此为同步接口。
**系统能力:**
SystemCapability.DistributedDataManager.Preferences.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------------------- |
| key | string | 是 | 要检查的存储key名称,不能为空。 |
**返回值:**
| 类型 | 说明 |
| ---------------------- | ------------------------------------------------------------ |
| boolean | 返回Preferences实例是否包含给定key的存储键值对,true表示存在,false表示不存在。 |
**示例:**
```
js
try
{
let
isExist
=
preferences
.
hasSync
(
'
startup
'
);
if
(
isExist
)
{
console
.
info
(
"
The key 'startup' is contained.
"
);
}
else
{
console
.
info
(
"
The key 'startup' dose not contain.
"
);
}
}
catch
(
err
)
{
console
.
info
(
"
Failed to check the key 'startup'. code =
"
+
err
.
code
+
"
, message =
"
+
err
.
message
);
}
```
### delete
delete(key: string, callback: AsyncCallback
<
void
>
): void
...
...
@@ -788,6 +958,31 @@ try {
```
### deleteSync<sup>10+</sup>
deleteSync(key: string): void;
从Preferences实例中删除名为给定Key的存储键值对,此为同步接口。
**系统能力:**
SystemCapability.DistributedDataManager.Preferences.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------------------- |
| key | string | 是 | 要删除的存储key名称,不能为空。 |
**示例:**
```
js
try
{
preferences
.
deleteSync
(
'
startup
'
);
}
catch
(
err
)
{
console
.
info
(
"
Failed to delete the key 'startup'. code =
"
+
err
.
code
+
"
, message =
"
+
err
.
message
);
}
```
### flush
flush(callback: AsyncCallback
<
void
>
): void
...
...
@@ -910,6 +1105,25 @@ try {
```
### clearSync<sup>10+</sup>
clearSync(): void;
清除此Preferences实例中的所有存储,此为同步接口。
**系统能力:**
SystemCapability.DistributedDataManager.Preferences.Core
**示例:**
```
js
try
{
preferences
.
clearSync
();
}
catch
(
err
)
{
console
.
info
(
"
Failed to clear. code =
"
+
err
.
code
+
"
, message =
"
+
err
.
message
);
}
```
### on('change')
on(type: 'change', callback: Callback
<
{ key : string }
>
): void
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录