提交 d888f29f 编写于 作者: Y yuyaozhi 提交者: Gitee

Merge branch 'master' of gitee.com:openharmony/docs into master

......@@ -40,7 +40,7 @@ Ability assistant(Ability助手,简称为aa)是实现应用、原子化服
当成功启动Ability时,返回“start ability successfully.”;当启动失败时,返回“error: failed to start ability.”。
使用方法:
**使用方法:**
```
aa start [-d <device-id>] -a <ability-name> -b <bundle-name> [-D]
......@@ -61,7 +61,7 @@ Ability assistant(Ability助手,简称为aa)是实现应用、原子化服
当成功停止Service Ability时,返回“stop service ability successfully.”;当停止失败时,返回“error: failed to stop service ability.”。
使用方法:
**使用方法:**
```
aa stop-service [-d <device-id>] -a <ability-name> -b <bundle-name>
......@@ -71,16 +71,17 @@ Ability assistant(Ability助手,简称为aa)是实现应用、原子化服
用于打印Ability的相关信息。
| 参数 | 参数说明 |
| ---------------------- | -------------------------------------- |
| -h/--help | 帮助信息。 |
| -a/--all | 打印所有mission内的Ability。 |
| -s/--stack \<number> | 打印指定mission stack内的Ability。 |
| -m/--mission \<number> | 打印指定mission内的Ability。 |
| -l/--stack-list | 打印每个mission stack内的mission列表。 |
| -u/--ui | 打印system ui Ability。 |
| -e/--serv | 打印Service Ability。 |
| -d/--data | 打印Data Ability。 |
| 参数 | 二级参数 | 参数说明 |
| ----------------- | -------------------- | ------------------------------------------------------------ |
| -h/--help | - | 帮助信息。 |
| -a/--all | - | 打印所有mission内的Ability。 |
| -l/--mission-list | type(缺省打印全部) | 打印任务栈信息。<br />type:<br />NORMAL <br />DEFAULT_STANDARD<br />DEFAULT_SINGLE<br />LAUNCHER |
| -e/--extension | elementName | 打印扩展组件信息。 |
| -u/--userId | UserId | 打印指定UserId的栈信息,需要和其他参数组合使用,例如 aa dump -a -u 100、aa dump -d -u 100、 |
| -d/--data | | 打印Data Ability。 |
| -i/--ability | AbilityRecord ID | 打印指定Ability详细信息 |
| -c/--client | | 打印Ability详细信息,需要和其他参数组合使用,例如 aa dump -a -c、aa dump -i 21 -c、 |
**使用方法:**
......
# Ability框架概述
\ No newline at end of file
# Ability框架概述
​ Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。Ability是系统调度应用的最小单元,是能够完成一个独立功能的组件,一个应用可以包含一个或多个Ability。
​ Ability框架模型结构具有两种形态。第一种形态为FA模型,API 8及其更早版本的应用程序只能使用FA模型进行开发, FA模型将Ability分为FA(Feature Ability)和PA(Particle Ability)两种类型,其中FA支持Page Ability,PA支持Service Ability和Data Ability;从API9开始,Ability框架引入了Stage模型作为第二种应用形态,Stage模型将Ability分为PageAbility和ExtensionAbility两大类,其中ExtensionAbility又被扩展为ServiceExtensionAbility、FormExtensionAbility、DataShareExtensionAbility等等一系列ExtensionAbility,以便满足更多的使用场景。
​ Stage模型的设计,主要是为了方便开发者更加方便地开发出分布式环境下的复杂应用。对于开发者而言,两种模型的主要区别在于:
* Ability类型存在差异,接口使用上也存在一定的区别;
![favsstage](figures/favsstage.png)
* Ability生命周期存在差异;
![lifecycle](figures/lifecycle.png)
* 应用的配置文件及应用包的结构存在差异,这些差异将体现在通过IDE生成的应用包中。
​ 两种模型的基本介绍,详见[FA模型综述](fa-brief.md)[Stage模型综述](stage-brief.md)
\ No newline at end of file
# FA模型综述
\ No newline at end of file
# FA模型综述
## 整体架构
鸿蒙用户程序的开发本质上就是开发Ability,OpenHarmony系统也是通过调度Ability,通过系统提供的一致性调度契约对Ability进行生命周期管理,从而实现对用户程序的调度。FA模型中Ability分为PageAbility、ServiceAbility和DataAbility三种类型。其中PageAbility具备ArkUI的Ability,是用户具体可见并可以交互的Ability实例;ServiceAbility也是Ability一种,但是没有UI,提供其他Ability调用自定义的服务,在后台运行;DataAbility也是没有UI,提供其他Ability进行数据的增删查服务,在后台运行。
## 应用包结构
**应用包结构如下图所示:**
![fa-package-info](figures/fa-package-info.png)
## 生命周期
**pageAbility生命周期回调如下图所示:**
![fa-pageAbility-lifecycle](figures/fa-pageAbility-lifecycle.png)
开发者可以在 app.js/app.ets 中重写生命周期函数,在对应的生命周期函数内处理应用相应逻辑。
## 进程线程模型
应用独享独立进程,Ability独享独立线程,应用进程在Ability第一次启动时创建,并为启动的Ability创建线程,应用启动后再启动应用内其他Ability,会为每一个Ability创建相应的线程。每个Ability绑定一个独立的JSRuntime实例,因此Ability之间是隔离的。
![fa-threading-nodel](figures/fa-threading-model.png)
\ No newline at end of file
......@@ -27,19 +27,19 @@ Page模板(以下简称“Page”)是FA唯一支持的模板,用于提供
**PageAbility类型Ability生命周期回调如下图所示:**
![PageAbility-Lifecycel-Callbacks](figures/page-ability-lifecycle-callbacks.png)
![fa-pageAbility-lifecycle](figures/fa-pageAbility-lifecycle.png)
## 启动本地PageAbility
导入模块
* 导入模块
```
import featureAbility from '@ohos.ability.featureAbility'
```
```
FeatureAbility.startAbility(parameter: StartAbilityParameter, callback: AsyncCallback<number>)
featureAbility.startAbility(parameter: StartAbilityParameter, callback: AsyncCallback<number>)
```
* 接口说明
......@@ -50,61 +50,75 @@ import featureAbility from '@ohos.ability.featureAbility'
```javascript
import featureAbility from '@ohos.ability.featureAbility'
featureAbility.startAbility(
{
want:
{
action: "",
entities: [""],
type: "",
options: {
// indicates the grant to perform read operations on the URI
authReadUriPermission: true,
// indicates the grant to perform write operations on the URI
authWriteUriPermission: true,
// support forward intent result to origin ability
abilityForwardResult: true,
// used for marking the ability start-up is triggered by continuation
abilityContinuation: true,
// specifies whether a component does not belong to ohos
notOhosComponent: true,
// specifies whether an ability is started
abilityFormEnabled: true,
// indicates the grant for possible persisting on the URI.
authPersistableUriPermission: true,
// indicates the grant for possible persisting on the URI.
authPrefixUriPermission: true,
// support distributed scheduling system start up multiple devices
abilitySliceMultiDevice: true,
// indicates that an ability using the service template is started regardless of whether the
// host application has been started.
startForegroundAbility: true,
// install the specified ability if it's not installed.
installOnDemand: true,
// return result to origin ability slice
abilitySliceForwardResult: true,
// install the specified ability with background mode if it's not installed.
installWithBackgroundMode: true
},
deviceId: "",
bundleName: "com.example.startability",
abilityName: "com.example.startability.MainAbility",
uri: ""
},
featureAbility.startAbility({
want:
{
action: "",
entities: [""],
type: "",
options: {
// indicates the grant to perform read operations on the URI
authReadUriPermission: true,
// indicates the grant to perform write operations on the URI
authWriteUriPermission: true,
// support forward intent result to origin ability
abilityForwardResult: true,
// used for marking the ability start-up is triggered by continuation
abilityContinuation: true,
// specifies whether a component does not belong to ohos
notOhosComponent: true,
// specifies whether an ability is started
abilityFormEnabled: true,
// indicates the grant for possible persisting on the URI.
authPersistableUriPermission: true,
// indicates the grant for possible persisting on the URI.
authPrefixUriPermission: true,
// support distributed scheduling system start up multiple devices
abilitySliceMultiDevice: true,
// indicates that an ability using the service template is started regardless of whether the
// host application has been started.
startForegroundAbility: true,
// install the specified ability if it's not installed.
installOnDemand: true,
// return result to origin ability slice
abilitySliceForwardResult: true,
// install the specified ability with background mode if it's not installed.
installWithBackgroundMode: true
},
);
)
deviceId: "",
bundleName: "com.example.startability",
abilityName: "com.example.startability.MainAbility",
uri: ""
},
},
);
```
want参数也可以使用parameters参数,使用key-value的方式输入。
* 示例
```javascript
import featureAbility from '@ohos.ability.featureAbility'
featureAbility.startAbility({
want:
{
bundleName: "com.example.startability",
uri: "",
parameters: {
abilityName: "com.example.startability.MainAbility"
}
},
},
);
```
## 启动远程PageAbility
导入模块
* 导入模块
```
import featureAbility from '@ohos.ability.featureAbility'
```
```
FeatureAbility.startAbility(parameter: StartAbilityParameter)
featureAbility.startAbility(parameter: StartAbilityParameter)
```
* 接口说明
......@@ -114,14 +128,13 @@ FeatureAbility.startAbility(parameter: StartAbilityParameter)
* 示例
```javascript
var promise = await ability.startAbility(
{
want:
{
deviceId: this.deviceId,
bundleName: "com.example.test",
abilityName: "com.example.test.MainAbility",
},
}
);
var promise = await featureAbility.startAbility({
want:
{
deviceId: this.deviceId,
bundleName: "com.example.test",
abilityName: "com.example.test.MainAbility",
},
}
);
```
\ No newline at end of file
# 调试助手使用指导
\ No newline at end of file
# 调试助手使用指导
​ 公共事件与通知提供了供开发者查看公共事件信息及通知信息、发布公共事件等一些调试功能的工具。这些工具已经随系统集成,开发者进入shell环境,可以直接调用相关命令。
### cem调试助手
##### publish
* 介绍
发布公共事件。
* 用法
`cem publish [<options>]`
参数如下表所示
| 参数 | 参数说明 |
| ------------ | ------------------------------------------ |
| -e/--event | 必选参数,发布事件名称 |
| -s/--sticky | 可选参数,发布粘性事件,默认发布非粘性事件 |
| -o/--ordered | 可选参数,发布有序事件,默认发布无序事件 |
| -c/--code | 可选参数,公共事件结果码 |
| -d/--data | 可选参数,公共事件携带数据 |
| -h/--help | 帮助信息 |
* 示例
`cem publish --event "testevent"`
发布名称为testevent的公共事件
![cem-publish-event](figures/cem-publish-event.png)
`cem publish -e "testevent" -s -o -c 100 -d "this is data" `
发布名称为testevent的粘性有序公共事件,该事件的结果码为100,携带数据内容为“this is data”
![cem-publish-all](figures/cem-publish-all.png)
##### dump
* 介绍
打印公共事件相关信息。
* 用法
`cem dump [<options>]`
参数如下表所示
| 参数 | 参数说明 |
| ---------- | -------------------------------------------- |
| -a/--all | 打印开机以来所有已发送的公共事件及其具体信息 |
| -e/--event | 查询特定名称事件的具体信息 |
| -h/--help | 帮助信息 |
* 示例
`cem dump -e "testevent"`
​ 打印公共事件名称为testevent的具体信息。
​ ![cem-dump-e](figures/cem-dump-e.png)
##### help
* 介绍
打印帮助信息。
* 用法
`cem help`
* 示例
![cem-help](figures/cem-help.png)
### anm调试助手
##### dump
* 介绍
打印通知相关信息。
* 用法
`anm dump [<options>]`
参数如下表所示
| 参数 | 参数说明 |
| ---------------- | ---------------------------------------- |
| -A/--active | 打印所有活跃的通知信息 |
| -R/--recent | 打印最近的通知信息 |
| -D/--distributed | 打印来自其他设备的分布式通知信息 |
| --setRecentCount | 可选参数,设置打印最近的通知消息缓存个数 |
| -h/--help | 帮助信息 |
* 示例
`anm dump -A`
打印活跃的通知信息
![anm-dump-A](figures/anm-dump-A.png)
`anm dump --setRecentCount 10`
设置打印最近通知消息缓存数量为10
##### help
* 介绍
打印帮助信息。
* 用法
`anm help`
* 示例
![anm-help](figures/anm-help.png)
\ No newline at end of file
# 公共事件与通知开发概述
\ No newline at end of file
# 公共事件与通知开发概述
​ 公共事件与通知提供了应用程序向系统其他应用程序发布消息、接收来自系统或其他应用特定消息的能力,这些消息可以是新闻推送、广告通知或者预警信息。
​ CES(Common Event Service, 即公共事件服务)为应用程序提供发布、订阅及退订公共事件的能力。公共事件根据事件发送方不同可分为系统公共事件和自定义公共事件。
![ces](figures/ces.png)
- 系统公共事件:系统将收集到的事件信息,根据系统策略发送给订阅该事件的用户程序。 公共事件包括:终端设备用户可感知的亮灭屏事件,以及系统关键服务发布的系统事件(例如:USB插拔,网络连接,系统升级)等。
- 自定义公共事件:由应用自身定义的期望特定订阅者可以接收到的公共事件,这些公共事件往往与应用自身的业务逻辑相关。
ANS(Advanced Notification Service,即通知增强服务)为应用程序提供发布通知的能力。这些通知常见的使用场景如下:
- 显示接收到的短消息、即时通讯消息等;
- 显示应用的推送消息,如广告、版本更新、新闻通知等;
- 显示当前正在进行的事件,如播放音乐、导航信息、下载进度等。
​ 通知消息将显示在系统下拉菜单栏,用户可对通知消息进行删除操作,或点击通知触发进一步的操作。
![ans](figures/ans.png)
......@@ -25,8 +25,7 @@
- [访问控制](js-apis-abilityAccessCtrl.md)
- [通用密钥库系统](js-apis-huks.md)
- 数据管理
- [轻量级存储<sup>9+</sup>](js-apis-data-preferences.md)
- [轻量级存储](js-apis-data-storage.md)
- [轻量级存储](js-apis-data-preferences.md)
- [分布式数据管理](js-apis-distributed-data.md)
- [关系型数据库](js-apis-data-rdb.md)
- [结果集](js-apis-data-resultset.md)
......@@ -77,15 +76,17 @@
- [USB管理](js-apis-usb.md)
- [位置服务](js-apis-geolocation.md)
- 基本功能
- [应用上下文](js-apis-basic-features-app-context.md)
- [日志打印](js-apis-basic-features-logs.md)
- [页面路由](js-apis-basic-features-routes.md)
- [弹窗](js-apis-basic-features-pop-up.md)
- [应用配置](js-apis-basic-features-configuration.md)
- [定时器](js-apis-basic-features-timer.md)
- [锁屏管理](js-apis-screen-lock.md)
- [设置系统时间](js-apis-system-time.md)
- [壁纸](js-apis-wallpaper.md)
- [剪贴板](js-apis-pasteboard.md)
- [动画](js-apis-basic-features-animator.md)
- [媒体查询](js-apis-mediaquery.md)
- [WebGL](js-apis-webgl.md)
- [WebGL2](js-apis-webgl2.md)
- [屏幕截图](js-apis-screenshot.md)
......
......@@ -10,10 +10,10 @@ Ability的上下文环境,继承自Context。
## 使用说明
在使用AbilityContext的功能前,需要通过Ability子类实例获取。
​在使用AbilityContext的功能前,需要通过Ability子类实例获取。
```js
import Ability from '@ohos.application.Ability'
class MainAbility extends Ability {
......@@ -42,10 +42,10 @@ startAbility(want: Want, callback: AsyncCallback&lt;void&gt;): void
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-featureAbility.md#want) | 是 | 启动Ability的want信息。 |
| callback | AsyncCallback&lt;void&gt; | 是 | callback形式返回启动结果 |
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 启动Ability的want信息。 |
| callback | AsyncCallback&lt;void&gt; | 是 | callback形式返回启动结果 |
**示例:**
......@@ -71,11 +71,11 @@ startAbility(want: Want, options: StartOptions, callback: AsyncCallback&lt;void&
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-featureAbility.md#want) | 是 | 启动Ability的want信息。 |
| options | StartOptions | 是 | 启动Ability所携带的参数。 |
| callback | AsyncCallback&lt;void&gt; | 是 | callback形式返回启动结果。 |
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 启动Ability的want信息。 |
| options | StartOptions | 是 | 启动Ability所携带的参数。 |
| callback | AsyncCallback&lt;void&gt; | 是 | callback形式返回启动结果。 |
**示例:**
......@@ -145,10 +145,10 @@ startAbilityForResult(want: Want, callback: AsyncCallback&lt;AbilityResult&gt;):
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want |[Want](js-apis-featureAbility.md#want) | 是 | 启动Ability的want信息。 |
| callback | AsyncCallback&lt;[AbilityResult](js-apis-featureAbility.md#abilityresult)&gt; | 是 | 执行结果回调函数。 |
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want |[Want](js-apis-featureAbility.md#Want类型说明) | 是 | 启动Ability的want信息。 |
| callback | AsyncCallback&lt;[AbilityResult](js-apis-featureAbility.md#abilityresult)&gt; | 是 | 执行结果回调函数。 |
**示例:**
......@@ -173,11 +173,11 @@ startAbilityForResult(want: Want, options: StartOptions, callback: AsyncCallback
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want |[Want](js-apis-featureAbility.md#want) | 是 | 启动Ability的want信息。 |
| options | StartOptions | 是 | 启动Ability所携带的参数。 |
| callback | AsyncCallback&lt;[AbilityResult](js-apis-featureAbility.md#abilityresult)&gt; | 是 | 执行结果回调函数。 |
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want |[Want](js-apis-featureAbility.md#Want类型说明) | 是 | 启动Ability的want信息。 |
| options | StartOptions | 是 | 启动Ability所携带的参数。 |
| callback | AsyncCallback&lt;[AbilityResult](js-apis-featureAbility.md#abilityresult)&gt; | 是 | 执行结果回调函数。 |
**示例:**
......@@ -353,9 +353,9 @@ startAbilityByCall(want: Want): Promise&lt;Caller&gt;;
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-featureAbility.md#want) | 是 | 传入需要启动的ability的信息,包含ability名称、包名、设备ID,设备ID缺省或为空表示启动本地ability。 |
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 传入需要启动的ability的信息,包含ability名称、包名、设备ID,设备ID缺省或为空表示启动本地ability。 |
**返回值:**
......
......@@ -5,6 +5,10 @@
无需导入。
## 权限列表
## console.debug
......
......@@ -776,7 +776,7 @@ queryContacts(attrs: ContactAttributes, callback: AsyncCallback&lt;Array&lt;Cont
## contact.queryContacts
queryContacts(holder: Holder, attrs: ContactAttributes, callback: AsyncCallback&lt;Array&lt;Contact&gt;&gt;)
queryContacts(holder: Holder, attrs: ContactAttributes, callback: AsyncCallback&lt;Array&lt;Contact&gt;&gt;): void
查询所有联系人,使用callback方式作为异步方法。
......
......@@ -1432,7 +1432,7 @@ lstat(path:string, callback:AsyncCallback&lt;Stat&gt;): void
```js
fileio.lstat(path, function (err, stat) {
// do something
));
});
```
......@@ -1827,7 +1827,7 @@ chown(path: string, uid: number, gid: number): Promise&lt;void&gt;
- 示例:
```js
let stat = fileio.statSync(path);
fileio.chown(path, stat.uid, stat.gid)).then(function(){
fileio.chown(path, stat.uid, stat.gid).then(function(){
console.info("chown successfully");
}).catch(function(err){
console.info("chown failed with error:"+ err);
......@@ -2127,7 +2127,7 @@ fdopenStream(fd: number, mode: string): Promise&lt;Stream&gt;
- 示例:
```js
fileio.fdopenStream(fd, mode).then(function(stream){
console.info("openStream successfully"+);
console.info("openStream successfully");
}).catch(function(err){
console.info("openStream failed with error:"+ err);
});
......
# FormProvider
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
卡片提供方相关接口。
## 导入模块
```
import formProvider from '@ohos.application.formProvider';
```
## 权限
## setFormNextRefreshTime
setFormNextRefreshTime(formId: string, minute: number, callback: AsyncCallback<void>): void;
设置指定卡片的下一次更新时间。
**系统能力:**
SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------------------------- |
| formId | string | 是 | 卡片标识 |
| minute | number | 是 | 指定多久之后更新,单位分钟,大于等于5 |
**示例:**
```js
var formId = "12400633174999288";
formProvider.setFormNextRefreshTime(formId, 5, (error, data) => {
if (error) {
console.log('formProvider setFormNextRefreshTime, error:' + error.code);
}
});
```
## setFormNextRefreshTime
setFormNextRefreshTime(formId: string, minute: number): Promise<void>;
设置指定卡片的下一次更新时间,以promise方式返回。
**系统能力:**
SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------------------------- |
| formId | string | 是 | 卡片标识 |
| minute | number | 是 | 指定多久之后更新,单位分钟,大于等于5 |
**示例:**
```js
var formId = "12400633174999288";
formProvider.setFormNextRefreshTime(formId, 5).catch((error) => {
console.log('formProvider setFormNextRefreshTime, error:' + JSON.stringify(error));
});
```
## updateForm
updateForm(formId: string, formBindingData: formBindingData.FormBindingData, callback: AsyncCallback<void>): void;
更新指定的卡片。
**系统能力:**
SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---------------------------------------------------------------------- | ---- | ---------------- |
| formId | string | 是 | 请求更新的卡片标识 |
| formBindingData | [FormBindingData](js-apis-formbindingdata.md#formbindingdata) | 是 | 用于更新的数据 |
**示例:**
```js
import formBindingData from '@ohos.application.formBindingData';
var formId = "12400633174999288";
let obj = formBindingData.createFormBindingData({temperature:"22c", time:"22:00"});
formProvider.updateForm(formId, obj, (error, data) => {
if (error) {
console.log('formProvider updateForm, error:' + error.code);
}
});
```
## updateForm
updateForm(formId: string, formBindingData: formBindingData.FormBindingData): Promise<void>;
更新指定的卡片,以promise方式返回。
**系统能力:**
SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---------------------------------------------------------------------- | ---- | ---------------- |
| formId | string | 是 | 请求更新的卡片标识 |
| formBindingData | [FormBindingData](js-apis-formbindingdata.md#formbindingdata) | 是 | 用于更新的数据 |
**示例:**
```js
import formBindingData from '@ohos.application.formBindingData';
var formId = "12400633174999288";
let obj = formBindingData.createFormBindingData({temperature:"22c", time:"22:00"});
formProvider.updateForm(formId, obj).catch((error) => {
console.log('formProvider updateForm, error:' + JSON.stringify(error));
});
```
\ No newline at end of file
......@@ -137,25 +137,25 @@ request\(url: string, options: HttpRequestOptions, callback: AsyncCallback<HttpR
```
httpRequest.request("EXAMPLE_URL",
{
method: 'GET',
header: {
'Content-Type': 'application/json'
},
readTimeout: 60000,
connectTimeout: 60000
},(err, data) => {
if (!err) {
console.info('Result:' + data.result);
console.info('code:' + data.responseCode);
console.info('header:' + data.header);
console.info('cookies:' + data.cookies); // 8+
console.info('header['Content-Type']:' + data.header['Content-Type']);
console.info('header['Status-Line']:' + data.header['Status-Line']);
console.info('header.Date:' + data.header.Date);
console.info('header.Server:' + data.header.Server);
} else {
console.info('error:' + err.data);
}
method: 'GET',
header: {
'Content-Type': 'application/json'
},
readTimeout: 60000,
connectTimeout: 60000
}, (err, data) => {
if (!err) {
console.info('Result:' + data.result);
console.info('code:' + data.responseCode);
console.info('header:' + data.header);
console.info('cookies:' + data.cookies); // 8+
console.info('header.Content-Type:' + data.header['Content-Type']);
console.info('header.Status-Line:' + data.header['Status-Line']);
console.info('header.Date:' + data.header.Date);
console.info('header.Server:' + data.header.Server);
} else {
console.info('error:' + err.data);
}
});
```
......@@ -188,24 +188,24 @@ request\(url: string, options? : HttpRequestOptions\): Promise<HttpResponse\>
```
let promise = httpRequest.request("EXAMPLE_URL", {
method: "GET",
connectTimeout: 60000,
readTimeout: 60000,
header: {
'Content-Type': 'application/json'
}
method: "GET",
connectTimeout: 60000,
readTimeout: 60000,
header: {
'Content-Type': 'application/json'
}
});
promise.then((value) => {
console.info('Result:' + value.result);
console.info('code:' + value.responseCode);
console.info('header:' + value.header);
console.info('cookies:' + value.cookies); // 8+
console.info('header['Content-Type']:' + value.header['Content-Type']);
console.info('header['Status-Line']:' + value.header['Status-Line']);
console.info('header.Date:' + value.header.Date);
console.info('header.Server:' + value.header.Server);
console.info('Result:' + value.result);
console.info('code:' + value.responseCode);
console.info('header:' + value.header);
console.info('cookies:' + value.cookies); // 8+
console.info('header.Content-Type:' + value.header['Content-Type']);
console.info('header.Status-Line:' + value.header['Status-Line']);
console.info('header.Date:' + value.header.Date);
console.info('header.Server:' + value.header.Server);
}).catch((err) => {
console.error(`errCode:${err.code}, errMessage:${err.data}`);
console.error(`errCode:${err.code}, errMessage:${err.data}`);
});
```
......@@ -246,9 +246,9 @@ on\(type: 'headerReceive', callback: AsyncCallback<Object\>\): void
```
httpRequest.on('headerReceive', (err, data) => {
if (!err) {
console.info('header: ' + data.header);
console.info('header: ' + data.header);
} else {
console.info('error:' + err.data);
console.info('error:' + err.data);
}
});
```
......@@ -280,9 +280,9 @@ off\(type: 'headerReceive', callback?: AsyncCallback<Object\>\): void
```
httpRequest.on('headerReceive', (err, data) => {
if (!err) {
console.info('header: ' + data.header);
console.info('header: ' + data.header);
} else {
console.info('error:' + err.data);
console.info('error:' + err.data);
}
});
httpRequest.off('headerReceive');
......
......@@ -1532,7 +1532,7 @@ writeCharArray(charArray: number[]): boolean
### readCharArray
readCharArray(dataIn: boolean[]) : void
readCharArray(dataIn: number[]) : void
从MessageParcel实例中读取单个字符数组。
......@@ -1541,7 +1541,7 @@ readCharArray(dataIn: boolean[]) : void
- 参数
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| dataIn | boolean[] | 是 | 要读取的单个字符数组。 |
| dataIn | number[] | 是 | 要读取的单个字符数组。 |
- 示例
......@@ -1556,7 +1556,7 @@ readCharArray(dataIn: boolean[]) : void
### readCharArray
readCharArray(): boolean[]
readCharArray(): number[]
从MessageParcel实例读取单个字符数组。
......@@ -1565,7 +1565,7 @@ readCharArray(): boolean[]
- 返回值
| 类型 | 说明 |
| -------- | -------- |
| boolean[] | 返回单个字符数组。 |
| number[] | 返回单个字符数组。 |
- 示例
......@@ -2191,69 +2191,6 @@ readRawData(size: number): number[]
console.log("RpcTest: parcel read raw data result is : " + result);
```
### getDataVersion<sup>8+</sup>
getDataVersion(): number
从MessageParcel对象返回数据格式版本。
**系统能力**:SystemCapability.Communication.IPC.Core
- 返回值
| 类型 | 说明 |
| -------- | -------- |
| number | 从MessageParcel返回数据格式版本。 |
- 示例
```
let parcel = new rpc.MessageParcel();
let version = parcel.getDataVersion();
console.log("RpcTest: parcel get data version is : " + version);
```
### updateDataVersion<sup>8+</sup>
updateDataVersion(proxy: IRemoteObject): void
将远程对象数据格式版本更新到MessageParcel对象。
**系统能力**:SystemCapability.Communication.IPC.Core
- 参数
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| proxy | IRemoteObject | 是 | 使用该MessageParcel对象发送请求的远程对象。 |
- 示例
```
import FA from "@ohos.ability.featureAbility";
let proxy;
let connect = {
onConnect: function(elementName, remoteProxy) {
console.log("RpcClient: js onConnect called.");
proxy = remoteProxy;
},
onDisconnect: function(elementName) {
console.log("RpcClient: onDisconnect");
},
onFailed: function() {
console.log("RpcClient: onFailed");
}
};
let want = {
"bundleName": "com.huawei.server",
"abilityName": "com.huawei.server.MainAbility",
};
FA.connectAbility(want, connect);
let parcel = new rpc.MessageParcel();
parcel.updateDataVersion(proxy);
```
## Sequenceable
在进程间通信(IPC)期间,将类的对象写入MessageParcel并从MessageParcel中恢复它们。
......@@ -2459,7 +2396,7 @@ queryLocalInterface(descriptor: string): IRemoteBroker
### sendRequest
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise&lt;number&gt;<sup>7</sup>
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): boolean;<sup>7</sup>
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise&lt;SendRequestResult&gt;<sup>8+</sup>
......@@ -2571,10 +2508,22 @@ isObjectDead(): boolean
实现IRemoteObject代理对象。
**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.IPC.Core。
| 参数 | 值 | 说明 |
| --------------------- | ----------------------- | --------------------------------- |
| PING_TRANSACTION | 1599098439 (0x5f504e47) | 内部指令码,用于测试IPC服务正常。 |
| DUMP_TRANSACTION | 1598311760 (0x5f444d50) | 内部指令码,获取Binder内部状态。 |
| INTERFACE_TRANSACTION | 1598968902 (0x5f4e5446) | 内部指令码,获取对端接口描述符。 |
| MIN_TRANSACTION_ID | 1 (0x00000001) | 最小有效指令码。 |
| MAX_TRANSACTION_ID | 16777215 (0x00FFFFFF) | 最大有效指令码。 |
### sendRequest
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise&lt;number&gt;<sup>7</sup>
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): boolean;<sup>7</sup>
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise&lt;SendRequestResult&gt;<sup>8+</sup>
......@@ -2977,51 +2926,6 @@ isObjectDead(): boolean
```
### setDataVersion<sup>8+</sup>
setDataVersion(dataVersion: number): boolean
将数据格式版本设置到RemoteProxy对象。
**系统能力**:SystemCapability.Communication.IPC.Core
- 参数
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| dataVersion | number | 是 | 数据格式版本。 |
- 返回值
| 类型 | 说明 |
| -------- | -------- |
| boolean | 如果设置数据格式版本成功,则返回true;否则返回false。 |
- 示例
```
import FA from "@ohos.ability.featureAbility";
let proxy;
let connect = {
onConnect: function(elementName, remoteProxy) {
console.log("RpcClient: js onConnect called.");
proxy = remoteProxy;
},
onDisconnect: function(elementName) {
console.log("RpcClient: onDisconnect");
},
onFailed: function() {
console.log("RpcClient: onFailed");
}
};
let want = {
"bundleName": "com.huawei.server",
"abilityName": "com.huawei.server.MainAbility",
};
FA.connectAbility(want, connect);
let result = proxy.setDataVersion(1);
console.log("RpcClient: set Data Version is " + result);
```
## MessageOption
公共消息选项(int标志,int等待时间),使用标志中指定的标志构造指定的MessageOption对象。
......@@ -3184,6 +3088,32 @@ static getCallingUid(): number
}
```
### getCallingTokenId
static getCallingTokenId(): number;
获取调用者的TokenId,用于被调用方对调用方的身份校验。
**系统能力**:SystemCapability.Communication.IPC.Core
* 返回值
| 类型 | 说明 |
| ------ | --------------------- |
| number | 返回调用者的TokenId。 |
* 示例
```
class Stub extends rpc.RemoteObject {
onRemoteRequest(code, data, reply, option) {
let callerTokenId = rpc.IPCSkeleton.getCallingTokenId();
console.log("RpcServer: getCallingTokenId result: " + callerTokenId);
return true;
}
}
```
### getCalligDeviceID
......@@ -3375,7 +3305,7 @@ RemoteObject构造函数。
### sendRequest
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise&lt;number&gt;<sup>7</sup>
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): boolean;<sup>7</sup>
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise&lt;SendRequestResult&gt;<sup>8+</sup>
......@@ -3612,7 +3542,7 @@ getCallingPid(): number
### queryLocalInterface
queryLocalInterface(descriptor: descriptor): IRemoteBroker
queryLocalInterface(descriptor: string): IRemoteBroker
查询并获取当前接口描述符对应的远端对象是否已经存在。
......@@ -3621,7 +3551,7 @@ queryLocalInterface(descriptor: descriptor): IRemoteBroker
- 参数
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| descriptor | descriptor | 是 | 需要查询的接口描述符。 |
| descriptor | string | 是 | 需要查询的接口描述符。 |
- 返回值
| 类型 | 说明 |
......@@ -3714,7 +3644,7 @@ attachLocalInterface(localInterface: IRemoteBroker, descriptor: string): void
| PROT_WRITE | 2 | 映射的内存可写 |
### createAshmem
### createAshmem<sup>8+</sup>
static createAshmem(name: string, size: number): Ashmem
......@@ -3743,7 +3673,7 @@ static createAshmem(name: string, size: number): Ashmem
```
### createAshmemFromExisting
### createAshmemFromExisting<sup>8+</sup>
static createAshmemFromExisting(ashmem: Ashmem): Ashmem
......@@ -3772,7 +3702,7 @@ static createAshmemFromExisting(ashmem: Ashmem): Ashmem
```
### closeAshmem
### closeAshmem<sup>8+</sup>
closeAshmem(): void
......@@ -3788,7 +3718,7 @@ closeAshmem(): void
```
### unmapAshmem
### unmapAshmem<sup>8+</sup>
unmapAshmem(): void
......@@ -3804,7 +3734,7 @@ unmapAshmem(): void
```
### getAshmemSize
### getAshmemSize<sup>8+</sup>
getAshmemSize(): number
......@@ -3826,7 +3756,7 @@ getAshmemSize(): number
```
### mapAshmem
### mapAshmem<sup>8+</sup>
mapAshmem(mapType: number): boolean
......@@ -3853,7 +3783,7 @@ mapAshmem(mapType: number): boolean
```
### mapReadAndWriteAshmem
### mapReadAndWriteAshmem<sup>8+</sup>
mapReadAndWriteAshmem(): boolean
......@@ -3875,7 +3805,7 @@ mapReadAndWriteAshmem(): boolean
```
### mapReadOnlyAshmem
### mapReadOnlyAshmem<sup>8+</sup>
mapReadOnlyAshmem(): boolean
......@@ -3897,7 +3827,7 @@ mapReadOnlyAshmem(): boolean
```
### setProtection
### setProtection<sup>8+</sup>
setProtection(protectionType: number): boolean
......@@ -3924,7 +3854,7 @@ setProtection(protectionType: number): boolean
```
### writeToAshmem
### writeToAshmem<sup>8+</sup>
writeToAshmem(buf: number[], size: number, offset: number): boolean
......@@ -3954,7 +3884,7 @@ writeToAshmem(buf: number[], size: number, offset: number): boolean
```
### readFromAshmem
### readFromAshmem<sup>8+</sup>
readFromAshmem(size: number, offset: number): number[]
......
......@@ -140,7 +140,7 @@ sim.hasOperatorPrivileges(0, (err, data) => {
## sim.hasOperatorPrivileges<sup>7+</sup>
hasOperatorPrivileges(slotId: number): Promise<boolean>
hasOperatorPrivileges(slotId: number): Promise<boolean\>
检查应用(调用者)是否已被授予运营商权限,使用Promise方式作为异步方法。
......
......@@ -6,7 +6,7 @@
## 导入模块
```
import systemTime from '@ohos.systemTime';
```
......@@ -29,7 +29,7 @@ setTime(time : number, callback : AsyncCallback&lt;void&gt;) : void
| callback | AsyncCallback&lt;void&gt; | 是 | 回调函数,可以在回调函数中处理接口返回值。 |
- 示例:
```
// time对应的时间为2021-01-20 02:36:25
var time = 1611081385000;
......@@ -64,7 +64,7 @@ setTime(time : number) : Promise&lt;void&gt;
| Promise&lt;void&gt; | 返回的异步回调函数。 |
- 示例:
```
// time对应的时间为2021-01-20 02:36:25
var time = 1611081385000;
......@@ -91,7 +91,7 @@ getCurrentTime(isNano?: boolean, callback: AsyncCallback&lt;number&gt;): void
| callback | AsyncCallback&lt;number&gt; | 是 | 回调函数,返回自&nbsp;Unix&nbsp;纪元以来经过的时间。 |
- 示例:
```
systemTime.getCurrentTime(true, (error, data) => {
if (error) {
......@@ -122,7 +122,7 @@ getCurrentTime(isNano?: boolean): Promise&lt;number&gt;
| Promise&lt;number&gt; | 以Promise形式返回结果,返回自&nbsp;Unix&nbsp;纪元以来经过的时间。 |
- 示例:
```
systemTime.getCurrentTime().then((data) => {
console.log(`systemTime.getCurrentTime success data : ` + JSON.stringify(data));
......@@ -147,7 +147,7 @@ getRealActiveTime(isNano?: boolean, callback: AsyncCallback&lt;number&gt;): void
| callback | AsyncCallback&lt;number&gt; | 是 | 回调函数,返回自系统启动以来但不包括度睡眠时间经过的时间。 |
- 示例:
```
systemTime.getRealActiveTime(true, (error, data) => {
if (error) {
......@@ -178,7 +178,7 @@ getRealActiveTime(isNano?: boolean): Promise&lt;number&gt;
| Promise&lt;number&gt; | 以Promise形式返回结果,返回自系统启动以来但不包括度睡眠时间经过的时间。 |
- 示例:
```
systemTime.getCurrentTime().then((data) => {
console.log(`systemTime.getRealActiveTime success data : ` + JSON.stringify(data));
......@@ -203,7 +203,7 @@ getRealTime(callback: AsyncCallback&lt;number&gt;): void
| callback | AsyncCallback&lt;number&gt; | 是 | 回调函数,返回自系统启动以来包括深度睡眠时间经过的毫秒数。 |
- 示例:
```
systemTime.getRealTime(true, (error, data) => {
if (error) {
......@@ -234,7 +234,7 @@ getRealTime(): Promise&lt;number&gt;
| Promise&lt;number&gt; | 以Promise形式返回结果,返回自系统启动以来包括深度睡眠时间经过的时间。 |
- 示例:
```
systemTime.getRealTime().then((data) => {
console.log(`systemTime.getRealTime success data: ` + JSON.stringify(data));
......@@ -261,7 +261,7 @@ setDate(date: Date, callback: AsyncCallback&lt;void&gt;): void
| callback | AsyncCallback&lt;void&gt; | 是 | 回调函数,可以在回调函数中处理接口返回值。 |
- 示例:
```
var data = new Date("October 13, 2020 11:13:00");
systemTime.setDate(data,(error, data) => {
......@@ -295,7 +295,7 @@ setDate(date: Date): Promise&lt;void&gt;
| Promise&lt;void&gt; | 返回的异步回调函数。 |
- 示例:
```
var data = new Date("October 13, 2020 11:13:00");
systemTime.setDate(data).then((value) => {
......@@ -320,7 +320,7 @@ getDate(callback: AsyncCallback&lt;Date&gt;): void
| callback | AsyncCallback&lt;Date&gt; | 是 | 回调函数,返回当前系统日期。 |
- 示例:
```
systemTime.getDate((error, data) => {
if (error) {
......@@ -346,7 +346,7 @@ getDate(): Promise&lt;Date&gt;
| Promise&lt;Date&gt; | 以Promise形式返回结果,返回当前系统日期。 |
- 示例:
```
systemTime.getDate().then((data) => {
console.log(`systemTime.getDate success data : ` + JSON.stringify(data));
......@@ -373,7 +373,7 @@ setTimezone(timezone: string, callback: AsyncCallback&lt;void&gt;): void
| callback | AsyncCallback&lt;void&gt; | 是 | 回调函数,可以在回调函数中处理接口返回值。 |
- 示例:
```
systemTime.setTimezone('Asia/Shanghai', (error, data) => {
if (error) {
......@@ -406,7 +406,7 @@ setTimezone(timezone: string): Promise&lt;void&gt;
| Promise&lt;void&gt; | 返回的异步回调函数。 |
- 示例:
```
systemTime.setTimezone('Asia/Shanghai').then((data) => {
console.log(`systemTime.setTimezone success data : ` + JSON.stringify(data));
......@@ -430,7 +430,7 @@ getTimeZone(callback: AsyncCallback&lt;string&gt;): void
| callback | AsyncCallback&lt;string&gt; | 是 | 回调函数,返回系统时区。 |
- 示例:
```
systemTime.getTimeZone((error, data) => {
if (error) {
......@@ -456,7 +456,7 @@ getTimeZone(): Promise&lt;string&gt;
| Promise&lt;string&gt; | 以Promise形式返回结果,返回系统时区。 |
- 示例:
```
systemTime.getDate().then((data) => {
console.log(`systemTime.getTimeZone success data : ` + JSON.stringify(data));
......
......@@ -174,6 +174,6 @@ unmount(volumeId: string, callback:AsyncCallback&lt;boolean&gt;):void
| id<sup>9+</sup> | number | 卷id |
| uuid<sup>9+</sup> | string | 卷uuid |
| description<sup>9+</sup> | string | 卷相关描述 |
| removeAble<sup>9+</sup> | boolean | 是否为可移动存储设备 |
| removable<sup>9+</sup> | boolean | 是否为可移动存储设备 |
| state<sup>9+</sup> | int | 当前卷状态 |
| path<sup>9+</sup> | string | 卷的挂载地址 |
\ No newline at end of file
......@@ -269,7 +269,6 @@ isLastWorkTimeOut(workId: number): Promise\<boolean>
.catch(err => {
console.info('workschedulerLog isLastWorkTimeOut failed, because:' + err.data);
});
})
```
## WorkInfo
......
......@@ -48,10 +48,8 @@ PageA跳转到PageB,跳转的共享元素为image, shareid为“shareImage
<div>
<list>
<list-item type="description">
<div>
<image src="item.jpg" shareid="shareImage" onclick="jump" class="shared-transition-style"></image>
<text onclick="jump">Click on picture to Jump to ths details</text>
</div>
<image src="item.jpg" shareid="shareImage" onclick="jump" class="shared-transition-style"></image>
<text onclick="jump">Click on picture to Jump to ths details</text>
</list-item>
</list>
</div>
......@@ -237,3 +235,145 @@ export default {
b. back场景下:退出页面栈的Page2.js应用transition-enter描述的动画配置,并进行倒播;从页面栈第二位置进入栈顶位置的Page1.js应用transition-exit描述的动画配置,并进行倒播。
![zh-cn_image_0000001238184345](figures/zh-cn_image_0000001238184345.png)
### 示例
Page1有一个不透明盒子,点击盒子会跳转到Page2,当点击Page2中的盒子,会回退到Page1页面。
1. Page1
```
<!-- xxx.hml -->
<div class="container">
<text>index</text>
<div class="move_page" onclick="jump"></div>
</div>
```
```
<!-- xxx.js -->
import router from '@system.router';
export default {
data: {
},
jump() {
router.push({
uri:'pages/transition2/transition2'
})
}
}
```
```
<!-- xxx.css -->
.container {
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
.move_page {
width: 100px;
height: 100px;
background-color: #72d3fa;
transition-enter: go_page;
transition-exit: exit_page;
transition-duration: 5s;
transition-timing-function: friction;
}
@keyframes go_page {
from {
opacity: 0;
transform: translate(0px) rotate(60deg) scale(1.0);
}
to {
opacity: 1;
transform: translate(100px) rotate(360deg) scale(1.0);
}
}
@keyframes exit_page {
from {
opacity: 1;
transform: translate(200px) rotate(60deg) scale(2);
}
to {
opacity: 0;
transform: translate(200px) rotate(360deg) scale(2);
}
}
```
2. Page2
```
<!-- xxx.hml -->
<div class="container">
<text>transition</text>
<div class="move_page" onclick="jumpBack"></div>
</div
```
```
<!-- xxx.js -->
import router from '@system.router';
export default {
data: {
},
jumpBack() {
router.back()
}
}
```
```
<!-- xxx.css -->
.container {
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
.move_page {
width: 100px;
height: 100px;
background-color: #f172fa;
transition-enter: go_page;
transition-exit: exit_page;
transition-duration: 5s;
transition-timing-function: ease;
}
@keyframes go_page {
from {
opacity: 0;
transform:translate(100px) rotate(0deg) scale(1.0);
}
to {
opacity: 1;
transform:translate(100px) rotate(180deg) scale(2.0);
}
}
@keyframes exit_page {
from {
opacity: 1;
transform: translate(0px) rotate(60deg) scale(1);
}
to {
opacity: 0;
transform: translate(0px) rotate(360deg) scale(1);
}
}
```
![transition](figures/transition.gif)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册