$event - 事件监听

  • 更新时间:2025-12-13 11:58:45

事件监听

$event主要用来监听一些系统级别的事件,也会处理一些基础的应用事件,这些事件部分会依赖无障碍权限才可以监听得到。

此对象是一个线程安全的对象,内部已经处理好了线程并发情况,因此可以在任何线程中调用。

on(name, callback)

挂载事件监听

此函数是[唯一监听器],全局只会被设置一次(用户调用),当调用多次该函数时,后者将覆盖前者的数据。

如果想要取消[唯一监听器],只需要将第二个参数设置为null即可,例如:$event.on("lock",null);//取消锁屏事件

在$event中,事件分为好几个大类,一般有:(1)系统事件 (2)无障碍事件 (3)软件内部事件

一般情况下:(1)系统事件:不需要任何权限,但也有个例(比如:蓝牙需要附近设备权限以及位置权限), 但在(2)无障碍事件中:需要开启无障碍权限,否则无法监听得到。

  • 参数 : name {string} 事件类型名称

  • 参数 : callback {(data)=>{log(data);};} 回调函数

//如果你想监听某些事件,必须要知道这些事件的名称,请参考{EventType}文档
//监听WIFI事件
$event.on("wifi",(data)=>{
    //data中包含着非常详细的描述信息,通过日志就能打印获取
    log(data);
});

add(name, callback)

添加事件监听

每次调用该函数,否会增加一个监听器,即使是相同的名称,也会添加到监听器列表中。

在$event对象中,存在两种事件触发机制:[唯一监听器]和[监听器列表]

[唯一监听器]是通过on(name,callback)函数来进行设置的,它是全局唯一的,当事件触发的时候,只会被调用一次。

[监听器列表]是通过add(name,callback)函数来进行添加的,你可以多次添加多个监听器,甚至允许名称相同,当事件触发时,会调用你添加的所有监听器(软件重启后,监听器列表会被重置清空)。

当系统事件触发的时候,会先触发[唯一监听器],然后再触发[监听器列表]中的所有监听器。

  • 参数 : name {string} 事件类型名称

  • 参数 : callback {(data)=>{log(data);};} 回调函数

ls()

获取监听器列表名

  • 返回 : {string[]} 监听器列表名

clear()

清空监听器列表