動(dòng)態(tài)訂閱公共事件

2024-01-25 12:27 更新

場(chǎng)景介紹

動(dòng)態(tài)訂閱是指當(dāng)應(yīng)用在運(yùn)行狀態(tài)時(shí)對(duì)某個(gè)公共事件進(jìn)行訂閱,在運(yùn)行期間如果有訂閱的事件發(fā)布那么訂閱了這個(gè)事件的應(yīng)用將會(huì)收到該事件及其傳遞的參數(shù)。例如,某應(yīng)用希望在其運(yùn)行期間收到電量過(guò)低的事件,并根據(jù)該事件降低其運(yùn)行功耗,那么該應(yīng)用便可動(dòng)態(tài)訂閱電量過(guò)低事件,收到該事件后關(guān)閉一些非必要的任務(wù)來(lái)降低功耗。訂閱部分系統(tǒng)公共事件需要先申請(qǐng)權(quán)限,訂閱這些事件所需要的權(quán)限請(qǐng)見(jiàn)公共事件權(quán)限列表。

接口說(shuō)明

詳細(xì)接口見(jiàn)接口文檔。

接口名

接口描述

createSubscriber(subscribeInfo: CommonEventSubscribeInfo, callback: AsyncCallback<CommonEventData>): void

創(chuàng)建訂閱者對(duì)象(callback)

createSubscriber(subscribeInfo: CommonEventSubscribeInfo): Promise<CommonEventSubscriber>

創(chuàng)建訂閱者對(duì)象(promise)

subscribe(subscriber: CommonEventSubscriber, callback: AsyncCallback): void

訂閱公共事件

開(kāi)發(fā)步驟

  1. 導(dǎo)入模塊。

    1. import commonEventManager from '@ohos.commonEventManager';
    2. import Base from '@ohos.base';
  2. 創(chuàng)建訂閱者信息,詳細(xì)的訂閱者信息數(shù)據(jù)類(lèi)型及包含的參數(shù)請(qǐng)見(jiàn)CommonEventSubscribeInfo文檔介紹。
    1. // 用于保存創(chuàng)建成功的訂閱者對(duì)象,后續(xù)使用其完成訂閱及退訂的動(dòng)作
    2. let subscriber: commonEventManager.CommonEventSubscriber | null = null;
    3. // 訂閱者信息
    4. let subscribeInfo: commonEventManager.CommonEventSubscribeInfo = {
    5. events: ["usual.event.SCREEN_OFF"], // 訂閱滅屏公共事件
    6. }
  3. 創(chuàng)建訂閱者,保存返回的訂閱者對(duì)象subscriber,用于執(zhí)行后續(xù)的訂閱、退訂等操作。

    1. // 創(chuàng)建訂閱者回調(diào)
    2. commonEventManager.createSubscriber(subscribeInfo, (err: Base.BusinessError, data: commonEventManager.CommonEventSubscriber) => {
    3. if (err) {
    4. console.error(`Failed to create subscriber. Code is ${err.code}, message is ${err.message}`);
    5. return;
    6. }
    7. console.info('Succeeded in creating subscriber.');
    8. subscriber = data;
    9. // 訂閱公共事件回調(diào)
    10. })
  4. 創(chuàng)建訂閱回調(diào)函數(shù),訂閱回調(diào)函數(shù)會(huì)在接收到事件時(shí)觸發(fā)。訂閱回調(diào)函數(shù)返回的data內(nèi)包含了公共事件的名稱(chēng)、發(fā)布者攜帶的數(shù)據(jù)等信息,公共事件數(shù)據(jù)的詳細(xì)參數(shù)和數(shù)據(jù)類(lèi)型請(qǐng)見(jiàn)CommonEventData文檔介紹。

    1. // 訂閱公共事件回調(diào)
    2. if (subscriber !== null) {
    3. commonEventManager.subscribe(subscriber, (err: Base.BusinessError, data: commonEventManager.CommonEventData) => {
    4. if (err) {
    5. console.error(`Failed to subscribe common event. Code is ${err.code}, message is ${err.message}`);
    6. return;
    7. }
    8. })
    9. } else {
    10. console.error(`Need create subscriber`);
    11. }
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)