Skip to content
阅读进度

Binder 能否传递大数据 Parcelable 和 Serializable 有什么区别? ​

返回 Framework 与系统服务 目录

标准回答 ​

Binder 事务缓冲区有限,而且进程内多个在途事务会共享相关额度,不能把常见的约 1MiB 当作某个接口每次都能安全发送的大小。大数组、图片或大量列表可能触发 TransactionTooLargeException,宜改为分页、文件描述符、共享内存或只传标识。Parcelable 显式控制字段读写,更适合 Android IPC;Serializable 使用通用 Java 序列化机制,通常有更多运行时开销和对象处理成本。两者都要考虑字段兼容,Parcelable 的读写顺序和类型必须匹配。

延伸追问 ​

Intent extras 和保存的页面状态也可能进入 Binder 传输链路,不能只检查自写 AIDL。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。