外观
四大组件分别负责什么?
标准回答
Activity 承载交互页面;Service 承载需要由系统管理的服务工作;BroadcastReceiver 接收事件;ContentProvider 暴露结构化数据访问接口。
关键机制
- 组件由系统按生命周期调度,不是随便 new 一个对象就完成了组件启动。
- Activity / Service / Receiver 的常见生命周期回调默认在主线程;Service 不是后台线程。Provider 的远程数据调用可能在 Binder 线程池执行。
- 跨应用暴露组件要明确 exported、权限和输入校验;仅供内部使用的入口不要无意开放。
通俗例子
设备管理 App:Activity 展示设备,Service 管连接会话,Receiver 感知某些系统事件,Provider 按需向其他应用共享受控数据。不是每个项目都必须用全这四个组件。
易混淆点
不要在 onReceive 返回后就假设新开的线程能一直执行;组件返回后进程可能失去保活优先级。
参考资料
补充解释与边界
Activity 承载用户界面和交互入口;Service 承载不依赖某个页面的工作或对外提供绑定接口;BroadcastReceiver 接收广播事件;ContentProvider 通过统一接口提供数据访问与共享。四大组件都不是“天然的后台线程”。
进程负责隔离与资源承载,线程负责调度执行,组件是 Android 管理应用行为的入口。普通 Service 的生命周期回调默认在主线程;Provider 的远程访问接口可能在 Binder 线程并发执行,需要同步保护。
Service 一定是独立进程吗?不是,默认与应用其他组件处于同一进程;只有相应进程配置等条件才会改变。做 BLE SDK 也不必为了“后台”强行新建进程。
内容来源
- Android 技术札记 · 原条目
components - Android 智能硬件 SDK 技术 Wiki · 原条目
Q01