提交 b7e2662a 编写于 作者: Z zhuhan

事件通知

Signed-off-by: Nzhuhan <zhuhan10@huawei.com>
Change-Id: I4385fb40803c4c0c5893c1ef728444b340847bae
上级 e88d4cf0
......@@ -19,7 +19,6 @@
- [ServiceExtensionAbility](serviceextensionability.md)
- [DataShareExtensionAbility(仅对系统应用开放)](datashareextensionability.md)
- [FormExtensionAbility(服务卡片)](widget-development-stage.md)
- [StaticSubscriberExtensionAbility](static-subscriber-extension-ability.md)
- [AccessibilityExtensionAbility](accessibilityextensionability.md)
- [EnterpriseAdminExtensionAbility](enterprise-extensionAbility.md)
- [InputMethodExtensionAbility](inputmethodextentionability.md)
......@@ -43,9 +42,12 @@
- [进程模型](process-model-stage.md)
- 公共事件
- [公共事件简介](common-event-overview.md)
- [公共事件订阅](common-event-subscription.md)
- 公共事件订阅
- [公共事件订阅概述](common-event-subscription-overview.md)
- [动态订阅公共事件](common-event-subscription.md)
- [静态订阅公共事件(仅对系统应用开放)](common-event-static-subscription.md)
- [取消动态订阅公共事件](common-event-unsubscription.md)
- [公共事件发布](common-event-publish.md)
- [公共事件取消订阅](common-event-unsubscription.md)
- [后台服务](background-services.md)
- 线程间通信
- [线程模型](thread-model-stage.md)
......
# StaticSubscriberExtensionAbility开发指导
# 静态订阅公共事件(仅对系统应用开放)
## 场景介绍
​公共事件服务提供了动态订阅和静态订阅两种订阅方式。动态订阅即订阅方在运行期调用公共事件订阅的API实现对公共事件的订阅,详见[公共事件订阅](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/application-models/common-event-subscription.md)。与动态订阅相对应的是静态订阅方式,这种方式不需要主动调用公共事件的API,而是通过配置文件声明和实现继承自StaticSubscriberExtensionAbility的类实现对公共事件的订阅。静态订阅者在未接收订阅的目标事件时,处于未拉起状态,当系统或应用发布了指定的公共事件后,静态订阅者将被拉起,并执行onReceiveEvent回调,开发者可通过在onReceiveEvent回调中执行业务逻辑,实现当应用接收到特定公共事件(例如开机事件)时执行业务逻辑的目的。**需要注意的是,静态订阅能力严格受限,相关接口为系统API,仅限于经过系统层面功耗评审的特定系统应用使用**
静态订阅者在未接收订阅的目标事件时,处于未拉起状态,当系统或应用发布了指定的公共事件后,静态订阅者将被拉起,并执行onReceiveEvent回调,开发者可通过在onReceiveEvent回调中执行业务逻辑,实现当应用接收到特定公共事件时执行业务逻辑的目的。例如,某应用希望在设备开机的时候执行一些初始化任务,那么该应用可以静态订阅开机事件,在收到开机事件后会拉起该应用,然后执行初始化任务。静态订阅是通过配置文件声明和实现继承自StaticSubscriberExtensionAbility的类实现对公共事件的订阅。**需要注意的是,静态订阅公共事件对系统功耗有一定影响,建议谨慎使用**
## 开发步骤
1. 前置条件
请确保您的应用具备以下特征:
1)系统应用
2)使用full-sdk开发
3)经过性能功耗团队评审符合功耗要求,如果您希望在调试阶段尝试使用该功能,可修改系统配置文件/etc/static_subscriber_config.json,将待调试应用的包名添加至json文件中即可。
2. 静态订阅者声明
1. 静态订阅者声明
声明一个静态订阅者,首先需要在工程中新建一个ExtensionAbility, 该ExtensionAbility从StaticSubscriberExtensionAbility派生,其代码实现如下:
......@@ -38,7 +26,7 @@
3. 静态订阅者工程配置
2. 静态订阅者工程配置
在完成静态订阅者的代码实现后,需要将该订阅者配置到系统的module.json5中,配置形式如下:
......@@ -70,11 +58,13 @@
上述json文件主要关注以下字段:
**srcEntrance**: 表示extension的入口文件路径,即步骤2中声明的静态订阅者所在的文件路径
- srcEntrance : 表示ExtensionAbility的入口文件路径,即步骤2中声明的静态订阅者所在的文件路径
**type**: 表示extension的类型,对于静态订阅者需要声明为“staticSubscriber”
- type: 表示ExtensionAbility的类型,对于静态订阅者需要声明为“staticSubscriber”
**metadata**: 表示extension的二级配置文件信息。由于不同的extension类型其配置信息不尽相同,因此需要使用不同的config文件表示其具体配置信息。metadata字段共包含两个关键字name和resource。其中name字段表示extension的类型名称,对于静态订阅类型,name必须声明为“ohos.extension.staticSubscriber”,否则无法识别为静态订阅者;resource字段表示extension的配置信息路径,由开发者自行定义,在本例中表示路径为“resources/base/profile/subscribe.json"。
- metadata: 表示ExtensionAbility的二级配置文件信息。由于不同的ExtensionAbility类型其配置信息不尽相同,因此需要使用不同的config文件表示其具体配置信息。
- name:表示ExtensionAbility的类型名称,对于静态订阅类型,name必须声明为“ohos.extension.staticSubscriber”,否则无法识别为静态订阅者;
- resource: 字段表示ExtensionAbility的配置信息路径,由开发者自行定义,在本例中表示路径为“resources/base/profile/subscribe.json"。
metadata指向的二级配置文件的通常形式如下:
......@@ -94,14 +84,26 @@
需要注意二级配置文件必须按照此形式进行声明,否则会无法正确识别。下面对字段进行介绍:
**name**: 静态订阅extension的名称,需要和module.json5中声明的extensionAbility的name一致
- name: 静态订阅ExtensionAbility的名称,需要和module.json5中声明的ExtensionAbility的name一致
**permission**:订阅者要求的发布者需要具备的权限,对于发布了目标事件但不具备permission中声明的权限的发布者将被视为非法事件不予发布
- permission:订阅者要求的发布者需要具备的权限,对于发布了目标事件但不具备permission中声明的权限的发布者将被视为非法事件不予发布
**events**: 订阅的目标事件列表
- events: 订阅的目标事件列表
3. 静态订阅功能调试
如果您希望在调试阶段尝试使用该功能,可修改设备系统配置文件/etc/static_subscriber_config.json,将待调试应用的包名添加至json文件中即可。
```json
{
"install_list": [
{
"bundleName": "ohos.extension.staticSubscriber",
"allowCommonEvent": ["usual.event.A", "usual.event.B"],
}
]
}
```
## 相关示例
针对StaticSubscriberExtensionAbility开发,可参考如下实例:[StaticSubscriber:静态订阅(ArkTS)(API9)(Full SDK)](https://gitee.com/openharmony/applications_app_samples/tree/master/ability/StaticSubscriber)
......
# 公共事件订阅概述
​公共事件服务提供了动态订阅和静态订阅两种订阅方式。动态订阅与静态订阅最大的区别在于,动态订阅是应用运行时行为,而静态订阅是后台服务无需处于运行状态。
- 动态订阅:指订阅方在运行时调用公共事件订阅的API实现对公共事件的订阅,详见[动态订阅公共事件](common-event-subscription.md)
- 静态订阅:订阅方通过配置文件声明和实现继承自StaticSubscriberExtensionAbility的类实现对公共事件的订阅,详见[静态订阅公共事件](common-event-static-subscription.md)
\ No newline at end of file
# 公共事件订阅
# 动态订阅公共事件
## 场景介绍
当需要订阅某个公共事件,获取该公共事件传递的参数时,需要创建一个订阅者对象,用于作为订阅公共事件的载体,订阅公共事件并获取公共事件传递而来的参数。订阅部分系统公共事件需要先[申请权限](../security/accesstoken-guidelines.md),订阅这些事件所需要的权限请见[公共事件权限列表](../reference/apis/js-apis-commonEventManager.md#support)
动态订阅是指当应用在运行状态时对某个公共事件进行订阅,在运行期间如果有订阅的事件发布那么订阅了这个事件的应用将会收到该事件及其传递的参数。例如,某应用希望在其运行期间收到电量过低的事件,并根据该事件降低其运行功耗,那么该应用便可动态订阅电量过低事件,收到该事件后关闭一些非必要的任务来降低功耗。订阅部分系统公共事件需要先[申请权限](../security/accesstoken-guidelines.md),订阅这些事件所需要的权限请见[公共事件权限列表](../reference/apis/js-apis-commonEventManager.md#support)
## 接口说明
......
# 公共事件取消订阅
# 取消动态订阅公共事件
## 场景介绍
订阅者完成业务需要时,需要主动取消订阅,订阅者通过调用[unsubscribe()](../reference/apis/js-apis-commonEventManager.md#commoneventmanagerunsubscribe)方法取消订阅事件。
动态订阅者完成业务需要时,需要主动取消订阅,订阅者通过调用[unsubscribe()](../reference/apis/js-apis-commonEventManager.md#commoneventmanagerunsubscribe)方法取消订阅事件。
## 接口说明
......@@ -21,7 +21,7 @@
import commonEventManager from '@ohos.commonEventManager';
```
2. 根据[公共事件订阅](common-event-subscription.md)章节的步骤来订阅某个事件。
2. 根据[动态订阅公共事件](common-event-subscription.md)章节的步骤来订阅某个事件。
3. 调用CommonEvent中的unsubscribe()方法取消订阅某事件。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册