手机重启后 Keep Alive 监测状态恢复机制
为什么重启是个特殊场景
手机重启时,所有后台进程都会被杀掉,Keep Alive 也不例外。重启后有两个关键问题:
- Keep Alive 能不能自动恢复运行? 取决于自启动权限是否正确授予
- 恢复运行前,之前的计时状态会不会丢? 不会——Keep Alive 把计时状态存在本地,重启后会按上次保存的状态继续判断
不同 Android 版本的行为差异
| 情况 | Android 7.0 以下 | Android 7.0+ | 1.5.1 起 |
|---|---|---|---|
| 重启后首次解锁前能否开始新监测 | ❌ 不能 | ❌ 不能 | ❌ 不能 |
| 重启后首次解锁前能否根据上次状态发预警 | ❌ 不能(整个应用无法运行) | ✅ 可以(按上次保存状态判断) | ✅ 可以(增强版) |
| 重启后计时状态是否保留 | 应用无法运行,无从谈起 | ✅ 保留 | ✅ 保留 |
所以关键是:7.0+ 上 Keep Alive 重启后虽然不能检测新活动,但能按"上次保存的无操作时长"判断是否应该发预警——这意味着如果你重启时已经触发了 11 小时计时,重启后第一次访问手机是在 1 小时后(比如重启后又忘了碰手机),它可能会直接触发预警。
重启后可能出现的问题
问题 1:重启后监测开关自动关闭
原因:自启动权限没授予或被系统收紧。解决:见 国产系统后台放行。
问题 2:重启后触发了"假预警"
原因:1.5.2-alpha 修复了这个 bug——重启后 Keep Alive 会重新计时,而不是沿用上一次启动时的计时状态。1.5.1 及以下版本如果重启前刚好在计时临界点,重启后可能错误触发。解决:升级到 1.5.2+,或者手动打开应用重置一下计时(随便滑动一下屏幕就行)。
问题 3:重启后计时显示不对
Keep Alive 的 Settings 页面会显示上次检测到活动的时间。如果重启后看到的时间很久远,可能是正常的——它就是按重启前最后一次活动来判断的。如果担心误报,手动打开一次应用就能重置计时器。
1.5.2-alpha 的关键修复
1.5.2-alpha 版本专门修复了重启相关的两个问题:
- Fix a reboot re-arming monitoring and causing a false alert:重启不再导致计时重新归零,避免假预警
- Add full-screen "Are you there?" prompt over lock screen:弹窗可以覆盖在锁屏界面上,首次解锁前就能看到
建议重启后如果有机会,打开一次应用确认监测开关还在 ON 状态。
重启后的最佳实践
- 重启后尽快解锁一次——解锁动作本身就是一次"活动",会重置计时
- 打开 Keep Alive 确认 Monitoring Enabled 仍为 ON——确保自启动生效了
- 如果不确定计时状态,手动解锁一次手机就能重置计时
自启动权限的授予步骤,见 国产系统后台放行。