Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
yang2765
Docs
提交
c753fdcb
D
Docs
项目概览
yang2765
/
Docs
与 Fork 源项目一致
Fork自
OpenHarmony / Docs
通知
1
Star
0
Fork
0
代码
文件
提交
分支
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看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
c753fdcb
编写于
3月 24, 2022
作者:
O
openharmony_ci
提交者:
Gitee
3月 24, 2022
浏览文件
操作
浏览文件
下载
差异文件
!2438 调整文档结构
Merge pull request !2438 from 刘宝/master
上级
db4606f3
7cdc8e8f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
106 addition
and
163 deletion
+106
-163
zh-cn/application-dev/ability/fa-dataability.md
zh-cn/application-dev/ability/fa-dataability.md
+76
-117
zh-cn/application-dev/ability/fa-serviceability.md
zh-cn/application-dev/ability/fa-serviceability.md
+18
-24
zh-cn/application-dev/ability/stage-serviceextension.md
zh-cn/application-dev/ability/stage-serviceextension.md
+12
-22
未找到文件。
zh-cn/application-dev/ability/fa-dataability.md
浏览文件 @
c753fdcb
# DataAbility开发指导
## Data Ability基本概念
## 场景介绍
基于Data模板的Ability(以下简称“Data”),有助于应用管理其自身和其他应用存储数据的访问,并提供与其他应用共享数据的方法。Data既可用于同设备不同应用的数据共享,也支持跨设备不同应用的数据共享。
Data提供方可以自定义数据的增、删、改、查,以及文件打开等功能,并对外提供这些接口。
## 创建Data
### 1. Data子系统实现
1.
需要实现Data中Insert,Query,Update,Delete接口的业务内容.保证能够满足数据库存储业务的基本需求.BatchInsert与ExecuteBatch接口已经在系统中实现遍历逻辑,依赖Insert,Query,Update,Delete接口逻辑,来实现数据的批量处理.
2.
Data中相关生命周期说明如下:
-
onInitialized
在Ability初始化调用,通过此回调方法执行rdb等初始化操作。
-
update
更新数据库中的数据。
-
query
查询数据库中的数据。
-
delete
删除一条或多条数据。
-
normalizeUri
对uri进行规范化。一个规范化的uri可以支持跨设备使用、持久化、备份和还原等,当上下文改变时仍然可以引用到相同的数据项。
-
batchInsert
向数据库中插入多条数据。
-
denormalizeUri
将一个由normalizeUri生产的规范化uri转换成非规范化的uri。
-
insert
向数据中插入一条数据。
-
openFile
打开一个文件。
-
getFileTypes
获取文件的MIME类型。
-
getType
获取uri指定数据相匹配的MIME类型。
-
executeBatch
批量操作数据库中的数据。
-
call
自定义方法。
创建Data的代码示例如下:
```
javascript
import
dataAbility
from
'
@ohos.data.dataability
'
import
dataRdb
from
'
@ohos.data.rdb
'
const
TABLE_NAME
=
'
book
'
const
STORE_CONFIG
=
{
name
:
'
book.db
'
,
encryptKey
:
new
Uint8Array
([])
}
const
SQL_CREATE_TABLE
=
'
CREATE TABLE IF NOT EXISTS book(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER, introduction TEXT NOT NULL)
'
let
rdbStore
=
undefined
export
default
{
onInitialized
(
abilityInfo
)
{
console
.
info
(
'
DataAbility onInitialized, abilityInfo:
'
+
abilityInfo
.
bundleName
)
dataRdb
.
getRdbStore
(
STORE_CONFIG
,
1
,
(
err
,
store
)
=>
{
console
.
info
(
'
DataAbility getRdbStore callback
'
)
store
.
executeSql
(
SQL_CREATE_TABLE
,
[])
rdbStore
=
store
});
},
insert
(
uri
,
valueBucket
,
callback
)
{
console
.
info
(
'
DataAbility insert start
'
)
rdbStore
.
insert
(
TABLE_NAME
,
valueBucket
,
callback
)
},
batchInsert
(
uri
,
valueBuckets
,
callback
)
{
console
.
info
(
'
DataAbility batch insert start
'
)
for
(
let
i
=
0
;
i
<
valueBuckets
.
length
;
i
++
)
{
console
.
info
(
'
DataAbility batch insert i=
'
+
i
)
if
(
i
<
valueBuckets
.
length
-
1
)
{
rdbStore
.
insert
(
TABLE_NAME
,
valueBuckets
[
i
],
(
num
:
number
)
=>
{
console
.
info
(
'
DataAbility batch insert ret=
'
+
num
)
})
}
else
{
rdbStore
.
insert
(
TABLE_NAME
,
valueBuckets
[
i
],
callback
)
}
## 接口说明
**表1**
Data中相关生命周期功能介绍
|接口名|描述|
|:------|:------|
|onInitialized|在Ability初始化调用,通过此回调方法执行rdb等初始化操作。|
|update|更新数据库中的数据。|
|query|查询数据库中的数据。|
|delete|删除一条或多条数据。|
|normalizeUri|对uri进行规范化。一个规范化的uri可以支持跨设备使用、持久化、备份和还原等,当上下文改变时仍然可以引用到相同的数据项。|
|batchInsert|向数据库中插入多条数据。|
|denormalizeUri|将一个由normalizeUri生产的规范化uri转换成非规范化的uri。|
|insert|向数据中插入一条数据。|
|openFile|打开一个文件。|
|getFileTypes|获取文件的MIME类型。|
|getType|获取uri指定数据相匹配的MIME类型。|
|executeBatch|批量操作数据库中的数据。|
|call|自定义方法。|
## 开发步骤
### 创建Data
1.
需要实现Data中Insert,Query,Update,Delete接口的业务内容.保证能够满足数据库存储业务的基本需求.BatchInsert与ExecuteBatch接口已经在系统中实现遍历逻辑,依赖Insert,Query,Update,Delete接口逻辑,来实现数据的批量处理.
创建Data的代码示例如下:
```
javascript
export
default
{
onInitialized
(
abilityInfo
)
{
console
.
info
(
'
DataAbility onInitialized, abilityInfo:
'
+
abilityInfo
.
bundleName
)
dataRdb
.
getRdbStore
(
STORE_CONFIG
,
1
,
(
err
,
store
)
=>
{
console
.
info
(
'
DataAbility getRdbStore callback
'
)
store
.
executeSql
(
SQL_CREATE_TABLE
,
[])
rdbStore
=
store
});
},
insert
(
uri
,
valueBucket
,
callback
)
{
console
.
info
(
'
DataAbility insert start
'
)
rdbStore
.
insert
(
TABLE_NAME
,
valueBucket
,
callback
)
},
batchInsert
(
uri
,
valueBuckets
,
callback
)
{
console
.
info
(
'
DataAbility batch insert start
'
)
for
(
let
i
=
0
;
i
<
valueBuckets
.
length
;
i
++
)
{
console
.
info
(
'
DataAbility batch insert i=
'
+
i
)
if
(
i
<
valueBuckets
.
length
-
1
)
{
rdbStore
.
insert
(
TABLE_NAME
,
valueBuckets
[
i
],
(
num
:
number
)
=>
{
console
.
info
(
'
DataAbility batch insert ret=
'
+
num
)
})
}
else
{
rdbStore
.
insert
(
TABLE_NAME
,
valueBuckets
[
i
],
callback
)
}
},
query
(
uri
,
columns
,
predicates
,
callback
)
{
console
.
info
(
'
DataAbility query start
'
)
let
rdbPredicates
=
dataAbility
.
createRdbPredicates
(
TABLE_NAME
,
predicates
)
rdbStore
.
query
(
rdbPredicates
,
columns
,
callback
)
},
update
(
uri
,
valueBucket
,
predicates
,
callback
)
{
console
.
info
(
'
DataAbilityupdate start
'
)
let
rdbPredicates
=
dataAbility
.
createRdbPredicates
(
TABLE_NAME
,
predicates
)
rdbStore
.
update
(
valueBucket
,
rdbPredicates
,
callback
)
},
delete
(
uri
,
predicates
,
callback
)
{
console
.
info
(
'
DataAbilitydelete start
'
)
let
rdbPredicates
=
dataAbility
.
createRdbPredicates
(
TABLE_NAME
,
predicates
)
rdbStore
.
delete
(
rdbPredicates
,
callback
)
}
};
```
},
query
(
uri
,
columns
,
predicates
,
callback
)
{
console
.
info
(
'
DataAbility query start
'
)
let
rdbPredicates
=
dataAbility
.
createRdbPredicates
(
TABLE_NAME
,
predicates
)
rdbStore
.
query
(
rdbPredicates
,
columns
,
callback
)
},
update
(
uri
,
valueBucket
,
predicates
,
callback
)
{
console
.
info
(
'
DataAbilityupdate start
'
)
let
rdbPredicates
=
dataAbility
.
createRdbPredicates
(
TABLE_NAME
,
predicates
)
rdbStore
.
update
(
valueBucket
,
rdbPredicates
,
callback
)
},
delete
(
uri
,
predicates
,
callback
)
{
console
.
info
(
'
DataAbilitydelete start
'
)
let
rdbPredicates
=
dataAbility
.
createRdbPredicates
(
TABLE_NAME
,
predicates
)
rdbStore
.
delete
(
rdbPredicates
,
callback
)
}
};
```
### 2.
子系统配置
2.
子系统配置
| Json重要字段 | 备注说明 |
| ------------- | ------------------------------------------------------------ |
...
...
@@ -144,15 +101,17 @@ Data提供方可以自定义数据的增、删、改、查,以及文件打开
}]
```
## 访问Data
### 1 JS应用开发前准备
### 访问Data
1.
JS应用开发前准备
基础依赖包:
1.
@ohos.ability.featureAbility
2.
@ohos.data.dataability
3.
@ohos.data.rdb
与Data子系统通信的Uri字符串
### 2 JS应用开发接口
2.
JS应用开发接口
工具接口类对象创建
```
js
// 作为参数传递的Uri,与config中定义的Uri的区别是多了一个"/",是因为作为参数传递的uri中,在第二个与第三个"/"中间,存在一个DeviceID的参数
...
...
zh-cn/application-dev/ability/fa-serviceability.md
浏览文件 @
c753fdcb
# ServiceAbility开发指导
##
Service Ability基本概念
##
场景介绍
基于Service模板的Ability(以下简称“Service”)主要用于后台运行任务(如执行音乐播放、文件下载等),但不提供用户交互界面。Service可由其他应用或Ability启动,即使用户切换到其他应用,Service仍将在后台继续运行。
##
创建Service<a name="section17436202895812"></a>
##
接口说明
1.
Service也是一种Ability,Ability为Service提供了以下生命周期方法,开发者可以重写这些方法,来添加其他Ability请求与Service Ability交互时的处理方法。
**表1**
Service中相关生命周期功能介绍
|接口名|描述|
|:------|:------|
|onStart|该方法在创建Service的时候调用,用于Service的初始化。在Service的整个生命周期只会调用一次,调用时传入的Want应为空。|
|onCommand|在Service创建完成之后调用,该方法在客户端每次启动该Service时都会调用,开发者可以在该方法中做一些调用统计、初始化类的操作。|
|onConnect|在Ability和Service连接时调用。|
|onDisconnect|在Ability与绑定的Service断开连接时调用。|
|onStop|在Service销毁时调用。Service应通过实现此方法来清理任何资源,如关闭线程、注册的侦听器等。|
-
onStart()
## 开发步骤
该方法在创建Service的时候调用,用于Service的初始化。在Service的整个生命周期只会调用一次,调用时传入的Want应为空。
### 创建Service<a name="section17436202895812"></a>
-
onCommand()
1.
Service也是一种Ability,Ability为Service提供了以下生命周期方法,开发者可以重写这些方法,来添加其他Ability请求与Service Ability交互时的处理方法。
在Service创建完成之后调用,该方法在客户端每次启动该Service时都会调用,开发者可以在该方法中做一些调用统计、初始化类的操作。
-
onConnect()
在Ability和Service连接时调用,该方法返回IRemoteObject对象,开发者可以在该回调函数中生成对应Service的IPC通信通道,以便Ability与Service交互。Ability可以多次连接同一个Service,系统会缓存该Service的IPC通信对象,只有第一个客户端连接Service时,系统才会调用Service的onConnect方法来生成IRemoteObject对象,而后系统会将同一个IRemoteObject对象传递至其他连接同一个Service的所有客户端,而无需再次调用onConnect方法。
-
onDisconnect()
在Ability与绑定的Service断开连接时调用。
-
onStop()
在Service销毁时调用。Service应通过实现此方法来清理任何资源,如关闭线程、注册的侦听器等。
创建Service的代码示例如下:
...
...
@@ -49,7 +43,7 @@
}
```
2.
注册Service。
2.
注册Service。
Service也需要在应用配置文件config.json中进行注册,注册类型type需要设置为service。
...
...
@@ -73,7 +67,7 @@
## 启动Service<a name="section944219415599"></a>
##
#
启动Service<a name="section944219415599"></a>
Ability为开发者提供了startAbility()方法来启动另外一个Ability。因为Service也是Ability的一种,开发者同样可以通过将Want传递给该方法来启动Service。
...
...
@@ -103,11 +97,11 @@ var promise = await featureAbility.startAbility(
-
停止Service
Service一旦创建就会一直保持在后台运行,除非必须回收内存资源,否则系统不会停止或销毁Service。开发者可以在Service中通过terminate
Ability
()停止本Service或在其他Ability调用stopAbility()来停止Service。
Service一旦创建就会一直保持在后台运行,除非必须回收内存资源,否则系统不会停止或销毁Service。开发者可以在Service中通过terminate
Self
()停止本Service或在其他Ability调用stopAbility()来停止Service。
## 连接本地Service<a name="section126857614018"></a>
##
#
连接本地Service<a name="section126857614018"></a>
如果Service需要与Page Ability或其他应用的Service Ability进行交互,则须创建用于连接的Connection。Service支持其他Ability通过connectAbility()方法与其进行连接。
...
...
@@ -186,7 +180,7 @@ export default {
}
```
## 连接远程Service<a name="section126857614019"></a>
##
#
连接远程Service<a name="section126857614019"></a>
如果Service需要与Page Ability或其他应用的Service Ability进行跨设备交互,则须创建用于连接的Connection。Service支持其他Ability通过connectAbility()方法与其进行跨设备连接。
...
...
zh-cn/application-dev/ability/stage-serviceextension.md
浏览文件 @
c753fdcb
# ServiceExtensionAbility开发指导
##
基本概念
##
场景介绍
ExtensionAbility,是Stage模型中新增的扩展组件的基类,一般用于处理无界面的任务,生命周期较简单,没有前后台生命周期。ServiceExtensionAbility是ExtensionAbility的扩展类。
开发者可以自定义类继承ServiceExtensionAbility,通过重写基类中相关生命周期方法,来做初始化、连接中、断开连接时相关业务逻辑操作。
ServiceExtensionAbility中相关生命周期说明如下:
-
onCreate()
## 接口说明
首次调用startAbility、connectAbility时触发,开发者可以进行初始化操作。
-
onRequest()
每次调用startAbility都会触发,首次调用时startId为1,重复调用startAbility递增。
-
onConnect()
调用connectAbility触发,重复调用不会再次触发,除非调用disconnectAbility解除绑定后再调用;onConnect返回一个进程通信类RemoteObject。
-
onDisconnect()
调用disconnectAbility触发,Extension如果是用connectAbility拉起的,并且已经没有其他应用绑定这个Extension,则会触发onDestroy生命周期销毁组件。
-
onDestroy()
调用停止当前ability接口terminateSelf会触发。
**表1**
ServiceExtensionAbility中相关生命周期功能介绍
|接口名|描述|
|:------|:------|
|onCreate|首次调用startAbility、connectAbility时触发,开发者可以进行初始化操作。|
|onRequest|每次调用startAbility都会触发,首次调用时startId为1,重复调用startAbility递增。|
|onConnect|调用connectAbility触发,重复调用不会再次触发,除非调用disconnectAbility解除绑定后再调用;onConnect返回一个进程通信类RemoteObject。|
|onDisconnect|调用disconnectAbility触发,Extension如果是用connectAbility拉起的,并且已经没有其他应用绑定这个Extension,则会触发onDestroy生命周期销毁组件。|
|onDestroy|调用停止当前ability接口terminateSelf会触发。|
## 约束与限制
-
ServiceExtensionAbility使用和拉起都必须要有系统权限,鸿蒙系统当前不支持三方应用创建、使用和拉起后台应用功能
。
-
鸿蒙系统当前不支持三方应用创建ServiceExtensionAbility
。
##
启动ServiceExtensionAbility
##
开发步骤
1.
创建ServiceExtensionAbility
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录