blocker 中文文档 下载 App

逐个关掉 receiver 看谁在关联 验证唤醒链有没有断

验证唤醒链有没有断

关掉 receiver 只是第一步——你需要实际触发那个系统事件(解锁、连网、开机),看被关掉 receiver 的应用还会不会被唤醒。

验证流程

场景一:开机自启验证

  1. 关掉所有目标应用的 BOOT_COMPLETED receiver
  2. 重启手机
  3. 开机后先别碰任何应用,等 3-5 分钟让系统稳定
  4. 打开最近任务列表(不要手动打开任何应用)
  5. 看被关掉 receiver 的应用有没有在运行
  6. 打开设置 → 电池 → 后台活跃应用,确认有没有目标应用

结论:如果目标应用还在运行 → BOOT_COMPLETED 之外还有别的自启手段(比如应用的 MainActivity 被其他应用调起、或厂商系统级自启)。

场景二:解锁唤醒验证

  1. 关掉目标应用的 SCREEN_ON / USER_PRESENT receiver
  2. 锁屏
  3. 等 30 秒(让应用完全退出后台)
  4. 解锁屏幕
  5. 立刻打开最近任务列表 → 看目标应用有没有被拉起来
  6. 看通知栏有没有它的推送通知

结论:解锁后应用没被拉起来 → 成功;还被拉起来 → 还有其他 receiver 监听了解锁事件(比如 LOCKED_BOOT_COMPLETED、USER_PRESENT 的变体)。

场景三:网络切换唤醒验证

  1. 关掉目标应用的 CONNECTIVITY_CHANGE receiver
  2. 打开飞行模式等 10 秒
  3. 关闭飞行模式 → 让 Wi-Fi/移动数据重连
  4. 连上网后等 30 秒
  5. 打开最近任务列表 → 看目标应用有没有被拉起来跑数据同步

结论:连网后应用没被唤醒 → 成功;还被唤醒 → 可能走了另一个网络变化 receiver(比如 CONNECTIVITY_ACTION 的变体或 ACTION_WIFI_STATE_CHANGED)。

场景四:关联唤醒验证(打开 A 牵出 B)

  1. 关掉应用 B 的那些监听 A 相关 intent 的 receiver
  2. 杀掉 A 和 B 两个应用(都不在后台)
  3. 从桌面正常打开 A(不要从最近任务恢复)
  4. A 完全启动后 → 打开最近任务列表
  5. 看 B 有没有被拉起来

结论:B 没被拉起来 → 成功;还被拉起来 → B 可能走了别的唤醒通道(比如 content provider 触发的、或 A 直接用 startService 拉 B)。

IFW vs PM 验证注意点

没断怎么办

如果验证失败(应用还是被唤醒):

  1. 回去 Bloker → 再扫一遍那个应用的 receiver 列表
  2. 看有没有名字相近的(比如 BOOT_COMPLETED 之外还有 QUICKBOOT_POWERON,小米系统特有的开机广播)
  3. 换成 IFW + PM 双控制器组合(如果之前只用了 IFW 单通道)
  4. 确认 root 权限没问题(权限不够可能规则没生效)

验证通过后