外观
Binder 能否传递大数据 Parcelable 和 Serializable 有什么区别?
标准回答
Binder 事务缓冲区有限,而且进程内多个在途事务会共享相关额度,不能把常见的约 1MiB 当作某个接口每次都能安全发送的大小。大数组、图片或大量列表可能触发 TransactionTooLargeException,宜改为分页、文件描述符、共享内存或只传标识。Parcelable 显式控制字段读写,更适合 Android IPC;Serializable 使用通用 Java 序列化机制,通常有更多运行时开销和对象处理成本。两者都要考虑字段兼容,Parcelable 的读写顺序和类型必须匹配。
延伸追问
Intent extras 和保存的页面状态也可能进入 Binder 传输链路,不能只检查自写 AIDL。
内容来源
- Android Framework 知识手册 · 原条目
4-8