• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import { AsyncCallback, BusinessError } from '@ohos.base';
17import { Log } from '../utils/utils';
18import commonEventManager from '@ohos.commonEventManager';
19
20export class EventObserver {
21  private events: string[];
22  private subscriber: commonEventManager.CommonEventSubscriber | undefined = undefined;
23  private subscribeInfo: commonEventManager.CommonEventSubscribeInfo = {
24    events: []
25  };
26
27  constructor(events: string[]) {
28    this.events = events;
29  }
30
31  /**
32   * 注册监听资源变化事件
33   * @param callback
34   * return
35   */
36  public register(callback: AsyncCallback<commonEventManager.CommonEventData>): void {
37    if (callback === undefined || callback === null) {
38      Log.error(`callback is undefined.`);
39      return;
40    }
41    try {
42      if (this.events === undefined || !this.events.length) {
43        Log.error(`event is undefined.`);
44        return;
45      }
46      this.subscribeInfo.events = this.events;
47      commonEventManager.createSubscriber(this.subscribeInfo).then(subscriber => {
48        if (subscriber === undefined) {
49          Log.error(`subscriber is undefined.`);
50          return;
51        }
52        this.subscriber = subscriber;
53        try {
54          commonEventManager.subscribe(this.subscriber, callback);
55          Log.info(`subscribe success.`);
56        } catch (err) {
57          Log.error(`subscribe faild, code: ${err.code}, message: ${err.message}.`);
58        }
59      }).catch((err: BusinessError) => {
60        Log.error(`createSubscriber faild, code: ${err.code}, message: ${err.message}.`);
61      })
62    } catch (error) {
63      Log.error(`create subscriber faild, code: ${error.code}, message: ${error.message}.`);
64    }
65  }
66
67  /**
68   * 注销监听
69   * return
70   */
71  public unregister(): void {
72    if (this.subscriber === undefined) {
73      Log.error(`subscriber is undefined.`);
74      return;
75    }
76    try {
77      commonEventManager.unsubscribe(this.subscriber, err => {
78        if (err) {
79          Log.error(`unsubscriber faild, code: ${err.code}, message: ${err.message}.`);
80        } else {
81          Log.info(`unsubscriber success.`);
82        }
83      })
84    } catch (error) {
85      Log.error(`unsubscriber faild, code: ${error.code}, message: ${error.message}.`);
86    }
87  }
88
89}