receiver 广播接收器 开机自启和关联唤醒都靠它
receiver 是应用在"等"系统喊它干活的那个
receiver(广播接收器)是应用的"耳朵"——它注册监听某种系统事件(开机完成、网络变化、应用安装、屏幕解锁、充电状态变化),事件发生时系统广播一个 intent,receiver 收到后触发后续动作(启动 activity 或 service)。
开机自启和关联唤醒链的入口,全在 receiver 里。
为什么 receiver 是关联唤醒的关键
关联唤醒是安卓生态最烦人的一个行为:你打开了 A 应用,B、C 应用也跟着被拉起来跑了。原因是 B 和 C 的 receiver 监听了某个 A 应用触发的广播(比如 A 发送了一个自定义 intent,或者系统因为 A 的操作发了一个通用广播),B 和 C 一收到就启动了自己的 service。
常见的关联唤醒场景:
- 社交应用互相监听"登录状态变化"
- 输入法监听"激活"广播
- 文件管理器监听"挂载/卸载 SD 卡"
- 某电商 App 监听"安装了应用 A"然后自动启动推荐
怎么在 Blocker 里找到这些 receiver
进应用详情,切到 receiver tab。看名字和注释:
- 带
BOOT_COMPLETED的 → 开机自启入口,关掉它应用开机就不会自己启动了 - 带
PACKAGE_ADDED、PACKAGE_REMOVED的 → 监听应用安装/卸载,可能是关联唤醒链的一环 - 带
CONNECTIVITY_CHANGE的 → 监听网络变化,一开网就跑 - 带
USER_PRESENT、SCREEN_ON的 → 解锁/亮屏触发 - 带自定义包名前缀(比如监听另一个应用的 intent)→ 关联唤醒链的直接证据
关掉 receiver 的效果
receiver 本身是一个很小的"监听器",关掉它不是"卸载功能",而是让应用不再响应那个系统事件。开机不会自启了,亮屏不会被唤醒了,装个别的应用也不会被它关联启动了。
实战:禁开机自启
- 进应用 A 的详情页,切到 receiver tab
- 找名字里带
BOOT_COMPLETED的 receiver - 关掉它的开关
- 重启手机验证——应用 A 应该不会自己启动了
如果想更彻底,把同一个 receiver 关联的 service(开机后它要启动的那个 service)也一起关掉。
注意事项
有些应用的核心功能依赖 receiver——比如闹钟应用监听 TIME_SET 来重新校准闹钟时间,日历应用监听日期变化。不确定的先关一个试试,别一次性全关。