W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
靜態(tài)訂閱者在未接收訂閱的目標事件時,處于未拉起狀態(tài),當系統(tǒng)或應用發(fā)布了指定的公共事件后,靜態(tài)訂閱者將被拉起,并執(zhí)行onReceiveEvent回調,開發(fā)者可通過在onReceiveEvent回調中執(zhí)行業(yè)務邏輯,實現(xiàn)當應用接收到特定公共事件時執(zhí)行業(yè)務邏輯的目的。例如,某應用希望在設備開機的時候執(zhí)行一些初始化任務,那么該應用可以靜態(tài)訂閱開機事件,在收到開機事件后會拉起該應用,然后執(zhí)行初始化任務。靜態(tài)訂閱是通過配置文件聲明和實現(xiàn)繼承自StaticSubscriberExtensionAbility的類實現(xiàn)對公共事件的訂閱。需要注意的是,靜態(tài)訂閱公共事件對系統(tǒng)功耗有一定影響,建議謹慎使用。
靜態(tài)訂閱者聲明
聲明一個靜態(tài)訂閱者,首先需要在工程中新建一個ExtensionAbility, 該ExtensionAbility從StaticSubscriberExtensionAbility派生,其代碼實現(xiàn)如下:
- import StaticSubscriberExtensionAbility from '@ohos.application.StaticSubscriberExtensionAbility'
- export default class StaticSubscriber extends StaticSubscriberExtensionAbility {
- onReceiveEvent(event) {
- console.log('onReceiveEvent, event:' + event.event);
- }
- }
開發(fā)者可以在onReceiveEvent中實現(xiàn)業(yè)務邏輯。
靜態(tài)訂閱者工程配置
在完成靜態(tài)訂閱者的代碼實現(xiàn)后,需要將該訂閱者配置到系統(tǒng)的module.json5中,配置形式如下:
- {
- "module": {
- ......
- "extensionAbilities": [
- {
- "name": "StaticSubscriber",
- "srcEntrance": "./ets/StaticSubscriber/StaticSubscriber.ts",
- "description": "$string:StaticSubscriber_desc",
- "icon": "$media:icon",
- "label": "$string:StaticSubscriber_label",
- "type": "staticSubscriber",
- "visible": true,
- "metadata": [
- {
- "name": "ohos.extension.staticSubscriber",
- "resource": "$profile:subscribe"
- }
- ]
- }
- ]
- ......
- }
- }
上述json文件主要關注以下字段:
srcEntrance : 表示ExtensionAbility的入口文件路徑,即步驟2中聲明的靜態(tài)訂閱者所在的文件路徑
type: 表示ExtensionAbility的類型,對于靜態(tài)訂閱者需要聲明為“staticSubscriber”
metadata: 表示ExtensionAbility的二級配置文件信息。由于不同的ExtensionAbility類型其配置信息不盡相同,因此需要使用不同的config文件表示其具體配置信息。
metadata指向的二級配置文件的通常形式如下:
- {
- "commonEvents": [
- {
- "name": "xxx",
- "permission": "xxx",
- "events":[
- "xxx"
- ]
- }
- ]
- }
需要注意二級配置文件必須按照此形式進行聲明,否則會無法正確識別。下面對字段進行介紹:
name: 靜態(tài)訂閱ExtensionAbility的名稱,需要和module.json5中聲明的ExtensionAbility的name一致
permission:訂閱者要求的發(fā)布者需要具備的權限,對于發(fā)布了目標事件但不具備permission中聲明的權限的發(fā)布者將被視為非法事件不予發(fā)布
events: 訂閱的目標事件列表
修改設備系統(tǒng)配置文件
修改設備系統(tǒng)配置文件 /etc/static_subscriber_config.json,將靜態(tài)訂閱應用者的包名添加至該json文件中即可。
- {
- "xxx",
- "ohos.extension.staticSubscriber",
- "xxx"
- }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: