关于收集 Android Telephony 网络信息的设计思考2
需求:
- 目标1: Android Telephony data(数据模块)侧收集多源(ServiceStateTracker/ImsService/其他)网络状态信息。
- 目标2: 收集的数据需统一上报/存储到外部App的Provider。
- 字段分散,不方便只在ServiceStateTracker中收集和插入。
- 多触发点/多场景,需要统一插入。
一、架构设计建议
1. 分层与模块解耦
建议整体分为三层:
- 数据收集层(各业务模块)
- ServiceStateTracker、ImsService等各自以合适的方式将关键状态/事件上报。
- 信息汇聚与中转层(统一收集Agent/Observer层)
- 设计一个统一的NetworkStateCollector(或NetworkStatusAgent),负责接收所有上报,并构建好完整数据准备插入。
- Collector 负责合并/关联不同来源片段,组装为一次“统一上报/存储单元”。
- 数据落地与存储层
- Collector/Agent对外通过ContentProvider/ContentResolver接口完成数据插入。
好处