W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
動(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)限列表。
詳細(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 | 訂閱公共事件 |
導(dǎo)入模塊。
- import commonEventManager from '@ohos.commonEventManager';
- import Base from '@ohos.base';
- // 用于保存創(chuàng)建成功的訂閱者對(duì)象,后續(xù)使用其完成訂閱及退訂的動(dòng)作
- let subscriber: commonEventManager.CommonEventSubscriber | null = null;
- // 訂閱者信息
- let subscribeInfo: commonEventManager.CommonEventSubscribeInfo = {
- events: ["usual.event.SCREEN_OFF"], // 訂閱滅屏公共事件
- }
創(chuàng)建訂閱者,保存返回的訂閱者對(duì)象subscriber,用于執(zhí)行后續(xù)的訂閱、退訂等操作。
- // 創(chuàng)建訂閱者回調(diào)
- commonEventManager.createSubscriber(subscribeInfo, (err: Base.BusinessError, data: commonEventManager.CommonEventSubscriber) => {
- if (err) {
- console.error(`Failed to create subscriber. Code is ${err.code}, message is ${err.message}`);
- return;
- }
- console.info('Succeeded in creating subscriber.');
- subscriber = data;
- // 訂閱公共事件回調(diào)
- })
創(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文檔介紹。
- // 訂閱公共事件回調(diào)
- if (subscriber !== null) {
- commonEventManager.subscribe(subscriber, (err: Base.BusinessError, data: commonEventManager.CommonEventData) => {
- if (err) {
- console.error(`Failed to subscribe common event. Code is ${err.code}, message is ${err.message}`);
- return;
- }
- })
- } else {
- console.error(`Need create subscriber`);
- }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: