承接上一篇《Room 性能调优:写入与观察式查询》讲完的本地存储链路,这一篇把视线移到跨进程、跨端的数据交换上。移动端每天真正消耗流量的地方,往往不是本地数据库,而是接口响应体:一张列表页返回 200 条记录,JSON 冗余的字段名、重复的类型标记、空值字段,累积起来能占到三成体积。序列化格式的选型,本质上是在"可读性、自解释性、解析速度、体积"四者之间做取舍,而 Android 端的高频场景——长连接推送、跨进程 AIDL 数据结构、大列表接口、埋点上报——都指向同一个答案方向。
序列化格式的四个坐标
先建立评估坐标系。任何序列化方案都可以放到四个维度上打分:
| 维度 | 含义 | JSON | Protobuf | FlatBuffers |
|---|---|---|---|---|
| 自解释性 | 不看 schema 能否解析 | 强 | 弱(需.proto) | 弱(需 schema) |
| 体积效率 | 同等信息的编码开销 | 基准 1.0 | 约 0.3~0.5 | 约 0.5~0.7 |
| 解析成本 | CPU 与内存分配 |