Tasker 状态与事件上下文详解 系统状态监听与瞬发事件触发
State 与 Event 的区别
State(状态)和 Event(事件)是 Tasker 中最丰富的两种 Context,覆盖了系统几乎所有可观察的状态变化。
| 维度 | State | Event |
|---|---|---|
| 本质 | 持续的系统状态 | 瞬发的系统事件 |
| 生命周期 | 有"满足 → 不满足"的过程 | 发生即结束,没有"退出" |
| Exit Task | 有(状态恢复不满足时执行) | 无(所有关联 Task 立即执行) |
| 典型例子 | Wi-Fi 连接、电池电量低于 X、耳机插入 | 收到新短信、屏幕关闭、安装新 App |
State Context 详解
Tasker 内置了数十种 State,按类别整理如下:
网络与连接
- Wi-Fi Connected:已连接到指定 SSID(或任意 Wi-Fi)
- Bluetooth Connected:已连接到指定蓝牙设备(或任意设备)
- Near WiFi SSID:附近(未连接)有指定 SSID
- Mobile Network:蜂窝数据连接状态
- VPN:VPN 开关状态
电量与电源
- Battery Level:电量高于/低于/等于指定百分比
- Charging:充电中 / 不充电 / 只充交流电 / 只充 USB
- Power Save Mode:省电模式开关
屏幕与显示
- Display State:屏幕开 / 关 / 锁屏
- Auto Brightness:自动亮度开关
- Night Mode:夜间模式 / 深色模式
- Orientation:横屏 / 竖屏
音频与音量
- Silent Mode:静音 / 振动 / 响铃
- Ringer Volume:音量高于/低于指定值
- Media Volume:媒体音量
- Headset Plugged:耳机插入(有线或蓝牙)
系统与硬件
- Orientation Sensor:方向传感器(倒置 / 立起 / 平放)
- Proximity Sensor:距离传感器(靠近 / 远离)
- Accelerometer:加速度传感器(摇晃 / 静止)
- Temperature:电池温度高于指定值
- User Present:用户正在操作(有触摸事件)
自定义
- Variable Value:某个变量的值符合条件(见下方"变量触发")
Event Context 详解
Event 捕捉系统中发生的各种事件,是 Tasker 触发源中数量最多的一类。
通知相关
- Notification:有新通知 / 特定 App 的通知 / 通知内容匹配
- Notification Removed:通知被清除
通信
- Received Text:收到新短信 / MMS
- Received Phone Call:来电(响铃 / 接通 / 挂断)
- Missed Call:未接来电
系统事件
- Display On / Off:屏幕开 / 关
- Screen Unlocked:解锁
- Boot Completed:开机完成
- Package Added / Removed:安装 / 卸载 App
- Media Button:耳机按键事件
- USB Connected:USB 插入
位置与传感器
- Location Received:收到新 GPS 坐标(瞬发,适合记录轨迹)
- Cell Near / Far:基站变化
用户交互
- Shortcut Clicked:点击了 Tasker 创建的桌面快捷方式
- App Shortcut Clicked:App 快捷方式被点击
Tasker 自身
- Task Finished:某个 Task 执行完毕
- Profile Active / Inactive:另一个 Profile 激活 / 退出
变量触发:State Context 的隐藏能力
在 State 类别里有一个 Variable Value —— 它可以监听某个变量是否符合条件(大于、小于、匹配正则等)。
这使得你可以把 Tasker 变成真正的状态机:
Profile:自动启动导航
State:Variable Value %StartNav = 1 ← 监听变量
Enter Task:
1. 启动 Google Maps 导航
2. Variable Set %StartNav, 0 ← 重置变量
外部只要某个地方设置了 %StartNav = 1,这个 Profile 就会触发。其他 Profile 的 Exit Task、手动 Widget 点击、甚至 Scene 按钮都可以设置这个变量。
State/Event 匹配技巧
- Event 配合 Exit Task:没有意义,Event 是瞬发的
- State 作为 Profile 的唯一 Context:非常常见,比如"Wi-Fi 连到家 → 执行 Enter Task"
- State 叠加 AND:"Battery < 20% AND NOT Charging" → 低电量且未充电
- 多个 Event 放同一个 Profile:不推荐,OR 逻辑会让 Profile 频繁触发
- Event 作为触发链的起点:收到短信 → 解析内容 → 设置变量 → 另一个 Profile 变量触发
Event 重复触发问题
有些 Event(如 Notification)会在短时间内连续触发。如果你的 Task 执行一次需要较长时间,注意设计防抖逻辑:
- 在 Task 开头设置
%LastTriggered时间戳变量 - 检查距离上次触发是否已过了最短间隔
- 如果间隔太短就 Stop 退出
这比依赖 Exit Task 可靠,因为 Event 没有 Exit。