什么是注册组件?

Absinthe ... 2024-9-22 About 2 min

# 什么是注册组件?

# 基础知识

注册组件,即人们常说的“四大组件”,包括:

  • 服务(Service)
  • 活动(Activity)
  • 广播接收器(Broadcast Receiver)
  • 内容提供器(Content Provider)

它们被静态声明在 APK 的 AndroidManifest.xml 文件中,随 App 安装被注册在系统中。下面简要介绍它们各自的用途。

  • 服务: 可用于在后台执行耗时操作,另外它也用于进程间通信(IPC)
  • 活动: 用于显示界面来与用户交互,四大组件中唯一用户可感知的组件
  • 广播接收器: 可进行通知操作,例如用户熟悉的 App 自启动,本质是注册了系统的开机广播,系统开机后发送开机广播,App 被拉起
  • 内容提供器: 跨进程提供数据,包括但不限于应用数据库中的数据

一些基于 Intent 防火墙(IFW)包管理器(PM) 处理方式的 App 可以做到禁用以上的 静态注册 的组件。

警告

随意禁用注册组件是一项危险的操作,最好的情况是相关功能无法使用。如果 App 的开发者没有做良好的容错处理,将很可能导致 App 闪退、数据丢失。

注意

广播接收器可以被 动态注册,即 App 可能存在很多不为用户所知的广播被启动 App 后注册,这些广播是无法被知晓和禁用的。

注意

App 可以在应用启动的过程中 动态注册 四大组件,因此存在某一组件被禁用后启动 App 又重新被启用的情况。

# 为什么我的 App 中有这些奇怪的组件?

activity_tinker

很多 App 中会有上图这种重复的活动,这种一般是引入了热更新 SDK。每一个活动只是一个“占位符”,由云端动态注册成为实体活动。

Last update: 2024年9月22日 06:19
Contributors: dependabot[bot]