四类组件各关各的 activity service receiver provider 影响完全不同
一张表看清四类组件的区别
在开始动手之前,先把四类组件各自的"负责什么"、"关掉影响什么"、"该不该关"理清楚。Bloker 把它们全部列出来供你逐个开关,但哪类适合关、哪类要谨慎,差别很大。
| 组件类型 | 职责 | 典型用途 | 关掉后的效果 | 安全程度 |
|---|---|---|---|---|
| activity | 界面页面 | 首页、设置页、弹窗、广告落地页 | 对应页面打不开 | ⭐⭐⭐ 安全,试错成本最低 |
| service | 后台任务 | 广告拉取、推送保活、数据上报、后台下载 | 后台任务停止,省电省流量 | ⭐⭐ 要看是不是核心功能 |
| receiver | 事件监听 | 开机自启、网络变化响应、关联唤醒 | 不再响应那个系统事件 | ⭐⭐ 看监听什么事件 |
| provider | 数据共享 | 开放内部数据给其他应用 | 其他应用读不到数据 | ⭐⭐⭐⭐ 通常安全 |
什么时候 activity 不该关?
activity 里带 Main、Splash、Launcher、Home 的那些是应用的入口 activity——关掉它,应用就打不开了,等于变相卸载。除此之外的绝大多数 activity(广告落地页、推广弹窗、设置子页)都可以大胆试关。
什么时候 service 不该关?
核心功能依赖的 service 不能关:
- 音乐播放器的播放 service(关了音乐就停了)
- 下载器的下载 service(关了下载就断了)
- 系统组件的后台 service(关了系统可能出问题)
判断方法:关掉前记住 service 的名字,关掉后用应用的核心功能看有没有坏。
什么时候 receiver 不该关?
核心功能依赖 receiver 的典型案例:
- 闹钟应用监听
TIME_SET来重新校准闹钟 - 日历应用监听日期变化
- 权限请求时的授权提示 receiver(极少数)
大多数应用的 receiver 超过一半是冗余的——厂商应用里监听各种系统广播的 receiver 加起来能有十几个,大部分在你这个设备上永远不会触发。
Provider 基本都能关
provider 是四类组件中影响最小的一类,它只负责数据出口。除非你明确知道某个跨应用数据共享功能需要它,否则关掉不会产生可见的功能影响。