外观
为什么经常说 Binder 只需要一次数据拷贝?
标准回答
典型 Binder 事务中,驱动把发送端用户空间的事务数据拷入接收端映射的 Binder 缓冲区,因此常被概括为一次驱动数据拷贝,相比常规经过内核中转再复制到接收端的路径,减少了一次复制。但这不代表整次调用完全没有其他复制,参数编解码、Parcel 构造、对象分配和业务处理仍可能增加开销。它也不意味着大图片适合直接塞进 Parcel,大数据更适合共享内存、文件描述符或流式接口。
延伸追问
这个说法描述典型传输路径,不能当作所有 Binder 使用方式的严格总拷贝次数。
内容来源
- Android Framework 知识手册 · 原条目
4-2