什么是注册组件?
# 什么是注册组件?
# 基础知识
注册组件,即人们常说的“四大组件”,包括:
- 服务(Service)
- 活动(Activity)
- 广播接收器(Broadcast Receiver)
- 内容提供器(Content Provider)
它们被静态声明在 APK 的 AndroidManifest.xml 文件中,随 App 安装被注册在系统中。下面简要介绍它们各自的用途。
- 服务: 可用于在后台执行耗时操作,另外它也用于进程间通信(IPC)
- 活动: 用于显示界面来与用户交互,四大组件中唯一用户可感知的组件
- 广播接收器: 可进行通知操作,例如用户熟悉的 App 自启动,本质是注册了系统的开机广播,系统开机后发送开机广播,App 被拉起
- 内容提供器: 跨进程提供数据,包括但不限于应用数据库中的数据
一些基于 Intent 防火墙(IFW) 或 包管理器(PM) 处理方式的 App 可以做到禁用以上的 静态注册 的组件。
警告
随意禁用注册组件是一项危险的操作,最好的情况是相关功能无法使用。如果 App 的开发者没有做良好的容错处理,将很可能导致 App 闪退、数据丢失。
注意
广播接收器可以被 动态注册,即 App 可能存在很多不为用户所知的广播被启动 App 后注册,这些广播是无法被知晓和禁用的。
注意
App 可以在应用启动的过程中 动态注册 四大组件,因此存在某一组件被禁用后启动 App 又重新被启用的情况。
# 为什么我的 App 中有这些奇怪的组件?
很多 App 中会有上图这种重复的活动,这种一般是引入了热更新 SDK。每一个活动只是一个“占位符”,由云端动态注册成为实体活动。