tasker 中文文档 下载 App

Tasker 屏幕关闭监控详解 让自动化在 Doze 期间继续正常触发

屏幕关闭后发生了什么

当你按下电源键让屏幕关闭后,Android 系统会逐步降低后台活跃度以省电:

即时:屏幕变灭、屏幕上的 App 进入后台状态1-2 分钟:系统评估"这个 App 近期是否被使用过" 30 分钟:进入深度 Doze——大幅限制后台唤醒、延迟闹钟、限制网络数小时后:进入 App Standby——如果 Tasker 不常被打开,可能被进一步限制

屏幕关闭监控(Display Off Monitoring)就是 Tasker 在这个系统级限制下的生存策略。

Tasker 的屏幕关闭监控设置

Tasker 菜单 → 首选项 → 监控(Monitor)

在这里可以分别控制每种 Context 在屏幕关闭时的监控行为:

每种 Context 的监控策略

Context 类型屏幕关闭监控选项说明
时间 / 日期通常始终开启底层用 AlarmManager,Doze 期间也能精准触发
状态(State)建议开启系统广播方式,耗电很低
事件(Event)建议开启系统广播
应用(App)可选屏幕关闭时其实 App 不会切换,这个监控在屏幕关闭期间几乎不触发
位置(Location)建议关闭GPS 持续追踪在屏幕关闭时耗电非常高
手势可选屏幕关闭时也能检测(用加速度传感器),但耗电略高

推荐配置

屏幕关闭监控(推荐):
  时间 / 日期 → 开启
  状态 → 开启
  事件 → 开启
  应用 → 关闭(屏幕关闭时 App 不变,这个监控没意义)
  位置 → 关闭(太耗电,除非场景必须)
  手势 → 按需求开

为什么 Location 监控应该关

Location Context 最耗电的原因:

如果"屏幕关闭时的位置变化"是必须的(比如"手机离开家后自动启动车载模式"):

屏幕关闭期间的自动化设计

夜间模式(屏幕关闭时仍需精确)

夜间模式 Profile 用 Time Context(23:00-07:00),依赖 AlarmManager:

事件驱动(屏幕关闭时触发)

Profile:充电时锁屏界面显示密码本
  Event → Charging Connected
  AND
  State → Display Off

Enter Task:
  Show Scene → 密码本(显示锁屏界面上的 Scene)

这个场景屏幕必须是关的!Event Context 用系统广播,屏幕关闭监控开启后可以正常触发。

屏幕关闭时的定时心跳

Profile:屏幕关闭心跳
  Time → 每 5 分钟(但只在屏幕关闭 + 深度 Doze 前有效)
  AND
  State → Display Off

Task:
  1. 执行一个轻量级的状态检查(如 Wi-Fi 是否还连着)
  2. 如有异常 → 执行修复动作

注意:深度 Doze 期间这个 5 分钟定时可能被延迟到 15-30 分钟。如果心跳必须严格准时(比如安全场景),考虑用 AlarmManager 的 setAlarmClock 类型(可以穿透 Doze)。

屏幕关闭 + 深度 Doze 的测试方法

要验证你的 Profile 在 Doze 期间是否正常工作:

步骤一:设置测试 Profile

Profile:Doze 测试
  Time → 每 5 分钟
Enter Task:
  Write File → 追加 "时间 %TIME Tasker 还活着" 到日志

步骤二:让手机进入 Doze

  1. 关掉所有后台 App
  2. 屏幕关闭
  3. 放着不动 30 分钟以上
  4. 期间不要碰手机(一碰就会退出 Doze)

步骤三:查看日志

adb shell cat /sdcard/tasker-test.log

正常情况应该每 5 分钟一行:

时间 21:30 Tasker 还活着
时间 21:35 Tasker 还活着
时间 21:40 Tasker 还活着
...

如果发现延迟(比如中间跳了 20 分钟),说明 Doze 在限制 AlarmManager。这时需要检查:

  1. Tasker 是否在电池优化白名单
  2. 是否开启了省电模式
  3. 是否有其他 App 在频繁唤醒设备

Tasker 的唤醒锁(Wake Lock)

Tasker 内部会在执行 Task 时请求 Partial Wake Lock——这会在执行期间保持 CPU 活跃(但屏幕仍然关闭),确保 Task 能完整执行完毕。

通常 Tasker 自己管理 Wake Lock,但你可以在首选项里调整:

Wake Lock 的正确用法

Tasker 会在以下情况自动请求 Wake Lock:

Task 执行时间长(>10 秒)时:

屏幕关闭 + 多个 Profile 同时触发

在夜间或手机闲置时,可能有多个 Profile 在同一时间点触发:

Tasker 的处理:

建议:把执行长的 Task(如备份、下载)安排在不太可能有其他 Profile 触发的时段(凌晨 3-5 点)。