无操作计时机制与触发条件详解
Keep Alive 怎么判断"你没动手机"
Keep Alive 提供两种监测方式,本质上都是在看"手机有没有被用":
方式一:锁屏/解锁检测(默认)
应用监听 Android 的锁屏与解锁广播。解锁、手动锁屏、屏幕点亮——任何涉及电源键或触摸输入的事件都会重置计时器。这是最通用的方式,覆盖所有正常使用场景:
- 解锁后滑动查看消息 → 计时归零
- 看完后按电源键锁屏 → 计时开始
- 3 小时后再点亮屏幕 → 计时归零
默认参数下,连续锁屏 12 小时没有任何解锁操作才会触发确认弹窗。
方式二:指定应用使用检测
选择这个方式后,Keep Alive 不再盯锁屏状态,而是盯你选定的一组应用有没有被打开。常见选择:
- 微信 / 短信 → 社交工具,日常必用
- 淘宝 / 美团 → 消费工具,高频行为
- 地图 / 打车 → 出行场景
如果 12 小时内这几个应用都没被打开过,同样触发确认弹窗。适合某些特殊场景(比如把手机放桌上充电、偶尔看一眼但没解锁)。
计时器什么时候开始、什么时候归零
开始:最后一次检测到活动(锁屏/解锁/指定应用启动)归零:任何新的活动发生,计时器从那一刻重新开始跳过:休息时段(Rest Period)内完全不计时——夜里正常睡觉不会引发误报
时间线示意(默认参数):
周一 18:00 使用手机 → 计时归零
周一 22:00 进入休息时段 → 计时暂停
周二 06:00 休息时段结束 → 计时恢复(但周一 18:00 到现在只过了 8 小时)
周二 14:00 刚好满 12 小时 → 屏幕弹出"Are you there?"
周二 15:00 60 分钟确认超时 → 触发预警
为什么不用其他方式
Keep Alive 的设计选择是刻意的:
- 不用持续的传感器检测(加速度计、陀螺仪)——持续消耗电量,后台进程容易被系统杀掉
- 不用网络请求心跳——需要云服务器、涉及隐私数据传输
- 不用主动推送——打扰正常使用、用户体验差
锁屏/解锁广播是 Android 系统级事件,功耗接近零、后台进程不需要持续唤醒,同时覆盖了绝大多数"真的没在用手机"的场景。
Android 版本差异的影响
| Android 版本 | 监测能否在重启后首次解锁前运行 | 预警能否在首次解锁前发送 |
|---|---|---|
| 7.0 以下 | 不能,必须等首次解锁后才能开始监测 | 不能 |
| 7.0 及以上 | 不能开始新监测,但能记住上次计时状态 | 可以——按上次保存的无操作时长判断 |
| 1.5.1 起 | 重启后首次解锁前也能发送预警(1.5.1 新增) | 可以,设备重启后仍按上次状态判断 |
想知道为什么这很重要,见 重启后恢复。
默认值可以改吗
全部可以。主设置页的 Hours of Inactivity Before Prompt 就是这个参数——默认 12 小时,居家场景放宽到 6–12,户外高危场景调短到 2–4。详见 休息时段设置。